- Да.
- Подсчитайте размер утечек.
Не забудьте напечатать размер утечек на каждой итерации - так что вы увидите результат дажеесли программа вылетает.Программа не должна аварийно завершать работу, если вы проверяете наличие неудачных выделений перед тем, как получить к ней доступ.
Следовательно:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
enum { ALLOCSIZE = 125000 };
int main(void)
{
long long size = 0;
char *space = malloc(ALLOCSIZE);
while (space != 0)
{
size += ALLOCSIZE;
printf("OK %lld\n", size);
memset(space, '\0', ALLOCSIZE);
}
return(0);
}
В OOM Linux могут возникать проблемы;это позволяет чрезмерное использование памяти.Вы должны были бы получить доступ к выделенной памяти перед ее утечкой - отсюда memset()
(или вы могли бы использовать calloc()
вместо malloc()
).