8 байтов.

е всего, я заметил, что когда я malloc памяти против calloc, объем памяти отличается. Я работаю с наборами данных в несколько ГБ. Это нормально для этих данных, чтобы быть случайным.

Я ожидал, что смогу просто распределить большой объем памяти и прочитать все случайные данные, которые были в ней, переданы в float. Однако, глядя на объем памяти в средстве просмотра процесса, память явно не востребована (в отличие от calloc, где я вижу большой отпечаток). Я запустил цикл для записи данных в память, а затем увидел, что объем памяти увеличивается.Правильно ли я сказал, что память фактически не востребована, пока я ее не инициализирую?

Наконец, после того, как я пропустил 1024 * 1024 * 128 байт (1024 МБ в средстве просмотра процесса), я начал получать segfaults. Однако Calloc, похоже, инициализирует полный объем до 1 ГБ.Почему при инициализации памяти в цикле for с malloc с этим номером 128 МБ возникают ошибки segfaults и почему объем памяти показывает 1024 МБ?

Если malloc большое количество из памяти, а затем прочитать из него, что я получаю (так как средство просмотра процесса не показывает почти никакого следа, пока я не инициализирую его)?

Наконец, есть ли способ для меня выделить более 4 ГБ? Я тестирую производительность иерархии памяти.

Код для № 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);

Ответы на вопрос(4)

Ваш ответ на вопрос