Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.
Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.
Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou
… více »Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).
Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.
U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.
Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.
Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).
Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
struct HANDLER{
MEMORY * memory;
};
struct MEMORY{
CMD action;
pthread_mutex_t mutex;
char * Buffer;
int start;
int stop;
};
a k ni inicializacni funkci:
HANDLER * init_handler(){
HANDLER * handler;
handler=new HANDLER;
handler->memory=new MEMORY;
handler->memory->Buffer=new char [BUFFER_SIZE];
handler->memory->start=0;
handler->memory->stop=0;
pthread_mutex_init(&handler->memory->mutex, NULL);
handler->memory->action=READY;
return handler;
}
Pomocí debugu jsem zjistil, že ukazatel handler->memory->Buffer spravne ukazuje na nejake misto v pameti (konkretne 0x6126D0) ale po inicializaci funkci pthread_mutex_init se změní adresa na kterou ukazatel Buffer ukazuje na 0X00. Nevíte prosím někdo co dělám špatně? Místo pro pthread_mutex_t(32B) ve strukture je ale funkce pthread_mutex_init z nějakého důvodu přepíše i několik B za zvím místem!
Všem moc díky!
Řešení dotazu:
malloc místo new.
Neběží to na 64-bitovém systému? Tam by měl pthread_mutext_t mít 40 bajtů, takže problém by byl nejspíš s includy nebo nějakými define.
HANDLER * handler;
handler = (HANDLER*) malloc(sizeof(HANDLER));
handler->memory = (MEMORY*) malloc(sizeof(MEMORY));
handler->memory->Buffer = (char*) malloc(BUFFER_SIZE);
Pak snad prohodit ty definovaný struktury.
Zádrhel je niekde inde. Niečo, čo tu v tom kóde nevidíme, tam urobí bordel.
Souhlasím. Aby bylo možné určit, kde je problém, chtělo by to kompletní zdroják(y) (stačí minimalistický testcase, kde se to projevuje) a informaci, jak se to přesně překládalo a linkovalo (a na jaké architektuře).
kus zdrojáku je v úvodním příšpěvku, jinde už jen volám tuto funkci a pristupuji k té struktuře, problém je (jak jsem psal) v té inicializační funkci, že inicializace mutexu přepíše ukazatel na tu přidělenou pamět.
A právě proto je potřeba vidět celý zdroják, protože pravděpodobné vysvětlení je, že na různých místech se pracuje s různým layoutem některé z těch struktur. Kvůli tomu by bylo dobré vidět celý soubor (resp. celé soubory, pokud to není v jednom).
A v tomto případě si myslím, že je jedno jestli tu pamět získám pomocí malloc nebo new.
To nepopírám. Problém by byl, kdybyste alokoval jedním a zkusil uvolnit druhým, ale to by se samozřejmě projevovalo jinak.
kompiluji pomocí:
g++ -c -m64 -pipe -g -Wall -W -I/usr/share/qt4/mkspecs/linux-g++-64 -o test.o ../test.cpp
Pokud používáte pthreads (což podle toho mutexu používáte), mělo by se všechno kompilovat s -pthread
allocated 0x82a3048 before pthread_mutex_init() 0x82a3048 after pthread_mutex_init() 0x82a3048 after init_handler() 0x82a3048
pthread_mutex_init(&(handler->memory->mutex), NULL);
nevim ktery operator ma prednost &a->b tak to skus napsat &(a->b)
a < b && b < c" muselo závorkovat. V tomto případě nemá smysl, aby "&a->b" znamenalo "(&a)->b", protože to lze jednoduše zapsat jako "a.b".
Tiskni
Sdílej: