Выделяю память при помощи malloc, затем освобождаю при помощи free.
Если выделяю много памяти - 1000 байт, то после free память освобождаеться, что видно по результату команды ps
а если выделяю мало памяти - 100 байт, то после free колличество памяти отданное процессу не уменшаеться (по результатам ps)
Я так понимаю работает некая оптимизация раздачи памяти процессу, можно ли это как-то побороть? какой нить sync для памяти есть?
А то у меня сотни тысяч строк со средней длинной строки в 17 символов и даже после освобождения всех этих коротких строк, память не освобождается
#include <stdlib.h>
int main(void)
{
int i,size=1000;
char *k[1000];
system("sleep 2;ps aux | grep memory");
for (i=0;i<1000; i++)
{
k[i]=(unsigned char*)malloc(size);
if (k==NULL) {printf("Can't allocate memory\n"); exit(-1);}
}
system("sleep 2;ps aux | grep memory");
for (i=0;i<1000; i++)
{
free(k[i]);
}
system("sleep 2;ps aux | grep memory");
return (0);
}