2012-06-17 10 views
6

curiosidad si estoy creando una matriz de memoria compartida en la plataforma Windows, así:¿Se ha inicializado cero la matriz de memoria compartida devuelta por CreateFileMapping/MapViewOfFile?

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? 
} 

¿Es la matriz de memoria inicializado con 0 de la primera vez que llamo a este fragmento de código? Y si no, ¿cómo hacer que se inicialice cero?

+1

La mayoría de los sistemas operativos no completan todas las páginas recientemente asignadas en el espacio de direcciones de un proceso (a menos que esas páginas estén compartidas o respaldadas por archivos de disco o periféricos). No hacerlo sería imprudente desde el punto de vista de la seguridad. –

Respuesta

7

Desde el documentation:

El contenido inicial de las páginas de un objeto de asignación de archivo de copia por el archivo de paginación del sistema operativo son 0 (cero).

+0

Gracias. Evidentemente lo extrañé. Es bueno que no tengamos que limpiarlo. – ahmd0

Cuestiones relacionadas