Preguntas sobre la memoria de Malloc

En primer lugar, noté que cuando malloco la memoria vs.calloc, la huella de la memoria es diferente. Estoy trabajando con conjuntos de datos de varios GB. Está bien que estos datos sean aleatorios.

Esperaba que pudiera malloquear una gran cantidad de memoria y leer cualquier dato aleatorio que se incluyera en un flotante. Sin embargo, al observar la huella de la memoria en el visor de procesos, obviamente no se reclama la memoria (frente a calloc donde veo una gran huella). Ejecuté un bucle para escribir datos en la memoria y luego vi subir la huella de la memoria.¿Estoy en lo cierto al decir que la memoria no se reclama hasta que la inicializo?

Finalmente, después de pasar 1024 * 1024 * 128 bytes (1024 MB en el visor de procesos) comencé a obtener segfaults. Sin embargo, Calloc parece inicializar la cantidad total hasta 1 GB.¿Por qué obtengo valores predeterminados al inicializar la memoria en un bucle for con malloc en este número de 128 MB y por qué la huella de la memoria muestra 1024 MB?

Si malloc una gran cantidad de memoria y luego leo de ella, ¿qué obtengo (ya que el visor de procesos casi no muestra huella hasta que la inicializo)?

Finalmente, ¿hay alguna forma de asignar más de 4 GB? Estoy probando el rendimiento de la jerarquía de memoria.

Código para el n. ° 2:

    long long int i;
    long long int *test=(long long int*)malloc(1024*1024*1024);
    for (i=0;i<1024*1024*128;i++)
            test[i]=i;

    sleep(15);

Respuestas a la pregunta(4)

Su respuesta a la pregunta