Malloc Сбой при увеличении записей - PullRequest
0 голосов
/ 11 ноября 2018

Я использую malloc в своем коде для распределения памяти, как показано ниже:

    a*aobj= malloc(sizeof(a)* (unsigned long) n*n);


 if(aobj== NULL){
 printf("Error. Allocation was unsuccessful. \n");
return 1;


}

a - это структура, хранящая результат трех таблиц. Когда я запускаю для n> 30000 записей, происходит сбой и выдается сообщение об ошибке. Даже после литья типа, это не работает. Как я могу изменить, чтобы запустить его для большего количества записей?

1 Ответ

0 голосов
/ 11 ноября 2018

Предполагая, что ваша структура имеет размер 16 байт, вы пытаетесь выделить:

16 × 30000 × 30000 байт = 14 400 000 000 байт = 14,4 ГБайт

Это, вероятно, больше, чем доступно на вашем компьютере. Так что это терпит неудачу, потому что вы пытаетесь выделить слишком большой кусок памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...