Qualsiasi domanda da un PROFI a un SUPER PROFI - 1. - pagina 29

 
sergeev:

quando si chiude l'handle, la memoria (che è stata allocata oltre a quella specificata in CreateFileMapping) non viene restituita?
Si è liberato. Ma è alla fine. Dobbiamo salvare la memoria in fase di esecuzione.
 
alla fine di cosa? la fine del win dow o la chiusura di una manciata o la chiusura di un'applicazione?
 
sergeev:
alla fine di cosa? la fine del win dow o la chiusura di una manciata o la chiusura di un'applicazione?
Ognuno dei due da scegliere. Eppure, è la fine.
 
ah, beh, se sta chiudendo l'intestazione, allora non credo che ci sia alcuna perdita di memoria, è il modo normale per Windows di liberare la memoria quando un'intestazione viene cancellata
 

È in qualche modo sbagliato liberare la memoria durante l'esecuzione chiudendo il descrittore.

La memoria dovrebbe essere liberata senza la speranza di Windos.

 
:) come altro potrebbe essere liberato? tutto ciò che avete allocato, lo avete cancellato. MSDN per Mapping non dice nulla riguardo al liberare manualmente la memoria prima di chiudere il gestore
 
sergeev:
:) come altro potrebbe essere liberato? tutto ciò che avete allocato, lo avete cancellato. MSDN per Mapping non dice nulla riguardo al liberare manualmente la memoria prima di chiudere il gestore
Beh, non intendo dopo la chiusura della maniglia. Mentre lavoriamo con la memoria abbiamo bisogno di ridimensionarla dinamicamente. Ma non è necessario farlo sempre. La riallocazione costante richiede tempo.
 

Vadim, cosa stiamo analizzando esattamente?

Ho trovato due modi per espandere la memoria. Pensi che ci saranno problemi di perdite di memoria in entrambi i casi?

 

Se tutti i descrittori sono chiusi, non ci sono perdite. Una perdita è quando un programma viene scaricato ma lascia risorse occupate.

Ma ci possono essere problemi di consumo eccessivo di memoria. Ho avuto anch'io questi problemi non molto tempo fa. Ho collegato la classe sbagliata per lavorare con le serie temporali. Ho aggiunto una classe che indicizza i tick per secondi. Ho iniziato ad usare questa classe per lavorare con le barre mensili. Si è mangiato tutta la memoria in 30 secondi. Questa è una delle possibili varianti. Dovremmo monitorare questo tipo di cose e metterle in guardia.

Il secondo caso è quando il programma ha bisogno di molta memoria, per esempio 1000 Mb, ma non per molto tempo. Se non lo liberi, gli altri programmi avranno 1000 MB in meno finché il tuo programma non sarà scaricato.

In breve, è necessario tenere traccia del consumo di risorse.

 
Ok, lo terrò in considerazione.