Solo curioso se Sto creando un array di memoria condivisa su piattaforma Windows in questo modo:L'array di memoria condivisa restituito da CreateFileMapping/MapViewOfFile è zero inizializzato?
HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 1024 * 4, _T("mySharedMemName"));
if(hFile)
{
VOID* pData = MapViewOfFile(hFile, FILE_MAP_ALL_ACCESS, 0, 0, 1024 * 4);
//Is 'pData' array initialized with zeros the first time the 'hFile' is used?
}
è l'array di memoria inizializzato con 0 è la prima volta che io chiamo questo frammento di codice? E se no, come renderlo zero inizializzato?
maggior parte dei sistemi operativi lo zero riempire tutte le pagine che sono state recentemente mappati nello spazio di indirizzi di un processo (a meno che tali pagine sono condivisi o supportati da file su disco o periferiche). Non farlo sarebbe imprudente dal punto di vista della sicurezza. –