我正在編寫一個程序來泄漏內存(主內存)來測試系統如何與低系統內存和交換內存的行爲。我們使用下面的循環週期性運行,並出現內存泄漏內存泄漏使用malloc失敗
main(int argc, char* argv[])
{
int arg_mem = argv[1];
while(1)
{
u_int_ptr =(unsigned int*) malloc(arg_mem * 1024 * 1024);
if(u_int_ptr == NULL)
printf("\n leakyapp Daemon FAILED due to insufficient available memory....");
sleep(arg_time);
}
}
上述循環運行了一段時間,並打印消息「leakyapp守護進程失敗,因爲可用內存不足......」。但是當我運行「free」命令時,我可以看到運行該程序對主內存或交換沒有任何影響。
我做錯了什麼?
我覺得「不」,在最後一行應刪除:-) – Job 2010-08-17 07:54:20
我改變了我的代碼,因此我宣佈一個陣列來存儲所有指針 的char *一[1000]; 而在while循環 u_int_ptr = MMAP(NULL,arg_mem * 1024 * 1024,PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS | MAP_POPULATE,-1,0); A [1] =(字符*)u_int_ptr; //觸摸頁面* a [i] ='A'; i ++; 但我仍面臨着同樣的問題。 – Poorna 2010-08-17 08:13:47
它在內存上執行memset後工作 – Poorna 2010-08-17 16:14:06