ここで説明したように、キャッシュの目的で大量のメモリを必要とするアプリケーションを作成しています。今、私はそれをどのように実現できるかを理解するために、いくつかの malloc / new 構造をいじっています。私は奇妙な観察をしました:
#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 を使用しています...)。