私はscratchboxのクロスコンパイル環境にいると私は、バイナリを実行すると、私は、プロセスのメモリフットプリントの増加を見ないこのプログラムのメモリフットプリントが増加しないのはなぜですか?
ps -p pid -o cmd,rss,%mem
を行うと、この
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
int * ptr;
int i=0;
while(1)
{
ptr = (int*)malloc(10485760 * sizeof(int));
if(ptr == NULL)
{
printf("Could not malloc\n");
exit(1);
}
else
{
printf("Malloc done\n");
for (i = 0 ; i <= 10485759 ; i++)
{
ptr[i] = i ;
}
sleep (5);
continue;
}
}
}
を持っています。何故ですか?
メモリはすべて最初から一度に割り当てられていますか? –
@arasmussen 'while'ループの内部。 –
コンパイラは、あなたがもはやそのポインタにハンドルを持たないことを見ているでしょう(毎回ptrを書き込むため)それとも、1000万回の繰り返しを実行するのに時間がかかりますか? –