Я экспериментировал с простой программой C, которая держит выделяющий память:отсутствует [куча] раздел в/Proc/PID/карты
for (i = 0; i < 10000; i ++)
{
array[i] = malloc(1024*1024);
if (array[i] == NULL)
{
break;
}
printf("Sleeping...%d\n", i);
sleep(60);
}
Полный код вставили здесь: http://tny.cz/2d9cb3df
Однако, когда я cat /proc/pid/maps
, я не получаю [heap]
раздел. Зачем?
08048000-08049000 r-xp 00000000 08:11 17 /data/a.out
08049000-0804a000 r--p 00000000 08:11 17 /data/a.out
0804a000-0804b000 rw-p 00001000 08:11 17 /data/a.out
0804b000-0805e000 rw-p 00000000 00:00 0
b74c6000-b75c8000 rw-p 00000000 00:00 0
b75c8000-b7775000 r-xp 00000000 08:01 3539272 /lib/i386-linux-gnu/libc-2.17.so
b7775000-b7777000 r--p 001ad000 08:01 3539272 /lib/i386-linux-gnu/libc-2.17.so
b7777000-b7778000 rw-p 001af000 08:01 3539272 /lib/i386-linux-gnu/libc-2.17.so
b7778000-b777b000 rw-p 00000000 00:00 0
b7797000-b779a000 rw-p 00000000 00:00 0
b779a000-b779b000 r-xp 00000000 00:00 0 [vdso]
b779b000-b77bb000 r-xp 00000000 08:01 3539289 /lib/i386-linux-gnu/ld-2.17.so
b77bb000-b77bc000 r--p 0001f000 08:01 3539289 /lib/i386-linux-gnu/ld-2.17.so
b77bc000-b77bd000 rw-p 00020000 08:01 3539289 /lib/i386-linux-gnu/ld-2.17.so
bff21000-bff42000 rw-p 00000000 00:00 0 [stack]
Compi ler выводит, что цикл for ничего не делает (т.е. е. no-op) и оптимизирует его? –
образованное предположение? –
@ H2CO3, я изменил его, чтобы распечатать выделенный адрес, и он все тот же. – lang2