Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.
#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: