2013-05-31 81 views
1

我想清除一些虛擬內存,因爲我需要從一個精靈文件加載段。清理部分虛擬內存?

(我正在編寫一個加載並執行ELF file的程序)。

據我瞭解我必須使用munmap

unsigned int blok = sectionHeads[i].adr - (sectionHeads[i].adr % getpagesize()); 

if (munmap((void *)blok,getpagesize()) == -1) 
{ 
    printf("fail\n"); 
} 
else 
{ 
    printf("succ\n"); 
} 

BLOK是,我想以釋放內存地址的倍數。 (或者我認爲,英語不是我的母語,所以很可能我誤解了「多重」的含義)。

我想釋放內存,因爲後來我需要這個空間。

當我運行它,它並沒有超越munmap();

我在做什麼錯?

我在munmap文檔中發現的唯一約束是地址參數必須是系統pagesize的倍數。

有沒有更簡單的方法來釋放這些內存?

注:項目要求是我釋放內存,如果它是需要的但它沒有說如何。

+0

「munmap」的拼寫錯誤是怎麼回事? – Wug

回答

2

你可能會去映射你的代碼在運行內存,可以通過puttimg在if聲明斷點和blok的值與當前程序計數器在調試器檢查。

+0

我如何獲得電腦? –

+0

看看http://www.manpagez.com/man/1/gdb/ – markgz

+0

就是這樣。謝謝。 –