Я пытался выяснить, сколько памяти я могу в максимальной степени использовать на своей машине (1 Гб оперативной памяти 160 Гб платформы HD Windows).
Я читал, что максимальная память malloc может выделяться ограничена физической памятью (в куче).
Кроме того, когда программа превышает потребление памяти на определенный уровень, компьютер перестает работать, потому что другие приложения не получают достаточное количество памяти, которое им требуется.
Итак, чтобы подтвердить, я написал небольшую программу в C:
int main(){
int *p;
while(1){
p=(int *)malloc(4);
if(!p)break;
}
}
Я надеялся, что будет время, когда распределение памяти завершится неудачно, и цикл сломается, но мой компьютер висел, поскольку это был бесконечный цикл.
Я ждал около часа, и, наконец, мне пришлось отключить компьютер.
Некоторые вопросы:
- Предоставляет ли malloc также память из HD?
- В чем причина такого поведения?
- Почему в любой момент времени не прерывался цикл?
- Почему не было отказа в распределении?