Я пишу приложение, которое требует большой памяти для кеширования, поскольку я описал его здесь. Теперь я играю с некоторыми malloc/новыми конструкциями, чтобы понять, как я мог это реализовать. Я сделал странное замечание:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
while(1) {
char *foo = (char*)malloc(1024);// new char[1024];
if(foo == NULL) {
printf("Couldn't alloc\n");
fflush(stdout);
return 0;
}
}
return 0;
}
Почему этот printf никогда не был достигнут? Если в моей системе не хватает памяти, malloc, как говорят, возвращает NULL, как объясняется здесь. Но я всегда получаю SIGKILL (я использую linux...).