我正在使用Windows XP。所以我明白自動變量存儲在堆棧中,並且指針變量的動態生成數據存儲在堆中。故障安全分配
堆棧內存和堆內存的數量是否可用於每個已修復的程序。它可以設置爲特定的程序不同?如果是,那麼 - >該設置是否由系統自動完成,還是必須以某種方式手動完成?
我打算創建一個巨大的數組(50000個說記錄)的C.我只能認爲它聲明爲下列之一的結構:
- 全局和靜態創建如。結構產品[50000];
- 本地和動態創建例如。結構產品*產品; products = malloc(sizeof(struct Product)* 50000);
我只知道:
- 調用了過多的功能(遞歸或純一個在另一個)最多可以使用可用的堆棧存儲器。
- Malloc可能會失敗,意味着沒有足夠的堆內存。
對不起,對嗎?
這種情況是應用程序將與系統上的許多其他應用程序一起打開。我不希望此應用程序因內存不足而崩潰。那麼有什麼故障安全的方法有一個巨大的陣列,並吃它?
從你所說的我得到,如果我要繪製一個SET圖,那麼堆棧內存將在進程內存(進而是系統內存的一個子集)內。堆內存呢?它是來自進程內存區域內部還是外部? – Jazz
每個malloc(或其他動態分配)都會嘗試在可用堆中查找塊,如果沒有,它會向操作系統請求更多內存。 該塊成爲您的工藝內存的一部分。 – Jakub