Я бы хотел, чтобы malloc()
не работал, ограничивая доступную память.
$ ulimit -v 1000
$ ./main.exe 10000000
0x102bfb000
Но даже при использовании ulimit следующая программа по-прежнему корректно завершается.Кто-нибудь знает, как заставить malloc()
терпеть неудачу?Спасибо.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
size_t size = atoi(argv[1]);
void *ptr = NULL;
if((ptr = malloc(size)) == NULL) {
perror("malloc()");
exit(1);
}
printf("%p\n", ptr);
free(ptr);
return 0;
}
РЕДАКТИРОВАТЬ: выше, на Mac OS X.
В Linux, я получил ошибку сегментации.Почему malloc()
может вызвать ошибку сегментации?Как заставить malloc()
возвращать нулевой указатель?