Как увеличить память (ОЗУ) программы на C, используя последовательные вызовы функций malloc - PullRequest
0 голосов
/ 13 февраля 2019

Я пишу тестовую программу на C, которая последовательно вызывает функцию malloc каждую секунду, цель состоит в том, чтобы проверить ограничение ОЗУ процессора на базе ARM, работающего в системе Linux,

Я написал кодниже, и я проверял это раньше на моем компьютере (ОС: Ubuntu 16.04), но заполнение ОЗУ (VmRSS) не меняется каждую секунду, но, наверное, каждые 10 секунд, кто-нибудь может объяснить, почему?

FILE *trace;
int compteur=0;
char *var;
while (1)
{
    trace=fopen("trace.txt","a");
    compteur++;
    var=(char *)malloc(100000);
    fprintf(trace,"%d\n",compteur);
    fclose(trace);
    sleep(1);
}

Iзапустите эту команду, чтобы проверить занятость памяти программы

 cat /proc/prog_pid/status | grep "VmRSS"

Ожидаемые результаты: увеличение оперативной памяти на 100 КБ каждую секунду

Реальные результаты: увеличение оперативной памяти на 1 М каждые 10+ секунд

1 Ответ

0 голосов
/ 15 февраля 2019

Из некоторых комментариев я узнал, что реализация malloc может получать память из системы большими кусками, и ОС не нужно каждый раз выделять ей точный объем памяти, записывая в txt-файлколичество выделенных байтов, я смог точно определить предел оперативной памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...