2013-05-17 72 views
0

我目前正在研究只是模擬的代碼,增量垃圾回收。我的意思是說,在程序中,用戶將輸入要分配的物理內存量,並且將輸入如x = alloc(10MB)這樣的關鍵字,它們期望我分配物理內存的「x」10MB的對象。所以我將需要一個開始指針作爲代碼的結束指針。 我懷疑:分配這個「物理內存」的最好方法是什麼?我遇到了malloc和calloc,許多人建議在必要時不要使用它。還有新的運營商。所以我想知道是否還有其他更好的方法。這個物理內存將在整個過程中保持不變。 任何幫助表示讚賞。爲程序分配內存的最佳方式

+2

爲什麼alloc(10MB)應該分配15MB? – bjskishore123

+0

哦對不起。錯字...我做了編輯 – Tuffy

+0

@BrownieTuffy你想malloc和免費.. –

回答

1

在C++中,通常不鼓勵使用C++標準庫的集合類,例如std::vector,而是分配原始內存或使用原始指針。如果你正在編寫垃圾收集模擬,我可以想象你設計了一個類來統一訪問GC管理的內存,然後你分配它們的一個向量。

然而,如果不是這種情況,你可以(雖然在C++中,你reallly不應該)如果你需要使用malloc(),或calloc()零初始化的內存。

也有一種方法,我可以使另一個指針指向塊的結束地址。

當然,使用指針算術。

T *ptr = malloc(sizeof(*ptr) * N_ELEMENTS); 
T *endPastOne = ptr + N_ELEMENTS; 
相關問題