Come aumentare la dimensione heap per il processo

April 20

Come aumentare la dimensione heap per il processo


Ogni programma che viene eseguito sul computer utilizza la memoria. Il "cumulo" è l'area di memoria utilizzata per l'allocazione dinamica della memoria. In un programma C, gli oggetti sono immessi sul "mucchio", e built-in tipi di dati, come numeri interi e lunghi sono collocati sulla "pila". Lo stack è un'area più piccola, più veloce di memoria allocata da ultimo in, first out. Le variabili globali e statiche sono memorizzati anche sul "mucchio" e rimangono in memoria fino a quando il programma viene completato. La dimensione del mucchio è un numero predefinito di pagine; tuttavia, più pagine possono essere assegnati al mucchio.

istruzione

1 Ge la maniglia per l'heap predefinito del processo chiamante all'interno del programma C utilizzando "GetProcessHeap." Definire una variabile per tenere la maniglia chiamato "hHandle." Se "hHandle" è nullo, chiamata "GetLastError" per ottenere il messaggio di errore.

2 Utilizzando "hHandle", chiamata "HeapAlloc" per allocare la memoria a quel processo mucchio '. La serializzazione assicura che due thread non accedono lo stesso blocco di memoria; quindi, utilizzare solo il parametro "HEAP_NO_SERIALIZE" quando l'applicazione ha un solo filo o gestisce l'applicazione proprio thread chiama al mucchio di memoria. Sarà inoltre necessario per passare il numero di byte da destinare a "HeapAlloc."

3 Utilizzare "VirtualAlloc" di riservare un blocco di pagine per il processo. È possibile effettuare chiamate aggiuntive per "VirtualAlloc" per commettere singole pagine in modo da non consumare lo spazio di archiviazione fino a quando il processo in esecuzione ha bisogno.
Per allocare la memoria che è in default a zero e consente l'accesso in lettura / scrittura alle regioni impegnate delle pagine, tipo:
DWORD dsize = 468178553;
VirtualAlloc (NULL, dsize, MEM_COMMIT, PAGE_READWRITE);