2012-04-30 234 views
3

好的。所以我對如何在內存中放置可執行文件的理解是......將代表應用程序可訪問的內存的方形框圖像化。爲什麼堆棧溢出?

程序代碼位於存儲器的底部,疊層被分配給點剛好超出程序代碼且向上分配的。堆在內存的頂部開始並向下分配。

如果是這樣的話,爲什麼它可能比堆棧存儲器分配更多的堆內存?

回答

3

因爲即使是在有大量虛擬內存的可用現代系統,調用堆棧的最大尺寸通常刻意侷限於說,1MB。

這通常不是一個基本的限制它可以修改這個(例如使用setrlimit()在Linux中,或-Xss flag的Java)。但需要這樣做通常表示一個異常的程序;如果你有大的數據集,它們通常應該存儲在堆中。