Я пытался выяснить, сколько памяти я могу максимально вычислить на своей машине (1 Гб оперативной памяти 160 Гб платформы HD Windows).максимальная память, которую malloc может выделить
Я читал, что максимальная память malloc может выделяться ограничена физической памятью (в куче).
Также, когда программа превышает потребление памяти на определенном уровне, компьютер перестает работать, потому что другие приложения не получают достаточное количество памяти, которое им требуется.
Так, чтобы подтвердить, что я написал небольшую программу в C:
int main(){
int *p;
while(1){
p=(int *)malloc(4);
if(!p)break;
}
}
Я надеялся, что будет время, когда распределение памяти потерпит неудачу, и цикл будет ломаться, но мой компьютер висел, как это было бесконечный цикл.
Я ждал около часа и, наконец, мне пришлось заставить выключить компьютер.
Некоторые вопросы:
- ли распределяющие таНос память от HD также?
- В чем причина такого поведения?
- Почему в какой-то момент времени не было перерыва?
- Почему не было отказа от распределения?
В любом случае, почему malloc (4) и почему не malloc (4096) или malloc (8192), иначе? –
Конечно, это может быть все, что кратно размеру int. Не так ли? – Vikas
[не выдавать результат malloc в C] (http://stackoverflow.com/q/605845/995714) –