Oppure

Loading
15/10/17 10:31
AldoBaldo
Mi succede una cosa strana...

Ho uno dei miei pasticciatissimi programmi in fase di "elaborazione", e mi ritrovo a voler caricare delle immagini con Gdiplus per mezzo di new Image(L"nomefile";). Controllo tutto il controllabile e, quando è il caso, distruggo regolarmente con delete l'oggetto Image creato.

Tutto funziona alla perfezione finché... incredibile... chiamo GetOpenFileName() o GetSaveFileName()! A quel punto sembra che GDI impazzisca. Dal task manager rilevo che le due funzioni creano una sessantina di oggetti GDI che non vengono distrutti che in minima parte, e le mie successive chiamate a new Image(L"nomefile";) falliscono miseramente con GetLastStatus() che restituisce OutOfMemory (il che, francamente, mi sembra assurdo perché il task manager mi informa che sono ancora disponibili circa 1,3 GB di memoria fisica liberi).

Qualcuno qui ha idea di cosa sta succedendo? Perché ho già provato qualsiasi verifica col debugger e non trovo nessun altro errore. Dico nessuno. Sono evidentemente cieco, oppure è il sistema che fa cose strane (probabilmente perché m'è sfuggito qualche passaggio della documentazione, che pure ho letto e riletto non so quante volte)...
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
15/10/17 10:43
Bisognerebbe vedere il codice, ovviamente postando nella sezione corretta.

Così ci vuole la sfera di cristallo ...
15/10/17 11:12
AldoBaldo
Va bene, anche se è un po' ampio.
A proposito della sezione corretta... il codice è in C "imbastardito" con un po' di C++ (pochi oggetti, però;), ma il quesito riguarda il modo in cui si comportano win32, GDI e GdiPlus... qual è la sezione corretta? Immaginavo fosse questa ma se è meglio chiedo sulla sezione C/C++. Che dici?
Ultima modifica effettuata da AldoBaldo 15/10/17 11:15
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
15/10/17 11:13
E' sicuramente C/C++ ... non è GDI+ che non funziona ma qualcosa nel tuo codice ...
15/10/17 12:13
AldoBaldo
"Devio" il mio quesito su C/C++.
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.