Byla vydána OpenIndiana 2026.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).
Americký výrobce polovodičů onsemi (ON Semiconductor) zrušil plány na rozšíření výroby v rožnovském závodě v Česku za dvě miliardy dolarů (podle aktuálního kurzu zhruba 43,5 mld. Kč). Důvodem je vývoj na trhu.
O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.
Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.
Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.
V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.
Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.
Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.
#include < iostream >
#include "cList.h"
using namespace std;
int main()
{
cout << "Linked List" << endl;
cout << "--------------" << endl;
cNode* n1 = new cNode("1");
cNode* n2 = new cNode("2");
cNode* n3 = new cNode("3");
cList zoznam;
zoznam.append(n1);
zoznam.append(n2);
zoznam.append(n3);
zoznam.append(new cNode(*n1));
zoznam.append(new cNode(*n1));
zoznam.append(new cNode(*n1));
zoznam.printContents();
cNode* n4 = new cNode("4");
cNode* n2_5 = new cNode("2.5");
zoznam.insert(n4, 10);
zoznam.insert(n2_5, 2);
zoznam.deleteNode(1);
zoznam.deleteNode(0);
zoznam.deleteNode(10);
cout<<"---------------------------"<< endl;
zoznam.printContents();
cList zoznam2 = cList(zoznam);
zoznam2.deleteNode(0);
zoznam2.deleteNode(0); // nezmaže mi nultý prvok vidim to na problem s kopirovacím konštruktorom
cout<<"------------Zoznam 1 - original---------------"<< endl;
zoznam.printContents();
cout<<"------------Zoznam 2 - kopia---------------"<< endl;
zoznam2.printContents();
delete n1; // hádže segmantation fault
delete n2;
delete n3;
delete n4;
delete n2_5;
return 0;
}
[/code]
Problémový kod z cList.cpp
[code]#include "cList.h"
using namespace std;
cList::cList()
{
first = NULL;
}
cList::cList(const cList &oldList) // kopíruje aj to čo už nemá byť v pamäti, predpokladám že preto mi nemaže to čo by malo
{
first = NULL;
if (oldList.getLength() > 0)
{
first = new cNode(oldList.first->getData());
cNode *tmp = first, *tmp2;
for (int i = 0; i < oldList.getLength(); i++)
{
tmp2 = new cNode(oldList.getNode(i)->getData());
tmp->setNext(tmp2);
tmp = tmp2;
}
}
}
cList::~cList() // tento deštruktor asi sposobuje segmentation fault
{
for(int i = 0;i < getLength();i++)
{
cNode *tmp = getNode(i); // funkcie getNode vráti uzol na danom indexe, funguje v iných častiach kodu, v nej by problem byť nemal
delete tmp;
}
delete first;
}
Ostatne časti kodu zatial nebudem posielať.. . Som si na 99% istý že problem je v tomto kode. Pridal som do zdrojaku komentáre že čo nefunguje. Pri kopirovaní celeho zoznamu sa skopiruje aj to čo by tam už nemalo byť neviem prečo:( V tom deštruktore idem asi zle na to uvolnovanie pamäte.. ale zase keď nemam v tom deštruktore nič tak mi to počas delete sekcie v main.c vypiš random vypis pamäte... Ďakujem :)
Řešení dotazu:
cList::~cList()
{
this->clear();
}
void cList::clear()
{
struct destroyer
{
destroyer(cNode *first)
: current(first)
{}
~destroyer()
{
this->operator ()();
}
void operator ()()
{
while (this->current) {
cNode *n = this->current;
this->current = n->getNext();
delete n;
}
}
cNode *current;
};
destroyer d(this->first);
d();
}
Tohle správně zdestruuje celý seznam, i pokud destruktor některého cNode vyhodí výjimku.
Tiskni
Sdílej: