Помогите разобраться с setrlimit.
Цель - написать код, который бы ограничивал потребление памяти программы до заданного значения.
Этот код:
#include <cstdlib>
#include <cstdio>
#include <sys/resource.h>
using namespace std;
int main(int argc, char *argv[])
{
rlimit limit;
limit.rlim_cur = 32*1024*1024; // 32 MB
limit.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_AS, &limit);
int counter = 0;
while(true)
{
void* p = malloc(1024*1024);
if (!p)
break;
counter += 1024*1024;
}
printf("%d MB allocated\n", counter/1024/1024);
return EXIT_SUCCESS;
}
возвращает «20 MB allocated».
Не могу понять куда деваются еще 12 MB памяти.