2011-11-13 121 views
-2

我需要保留一個列表來模擬內存管理。該程序爲特定進程分配了一定數量的字節 - 進程是假的,因爲沒有實際進程,但基本上我想我所需要的只是一個整數列表。如何初始化C中的列表?

目前我有:

#define ALLOCSIZE 
#define *int[ALLOCSIZE] 

,我認爲這是正確的?我的C類有一個方法:

initialize_memory(int size) 
{ 

} 

我不想使用任何幻想,我想要的只是一個整數列表。

+0

'DEFINE'?你的意思是'#define'嗎? – Pubby

+0

對不起,#define是正確的 – antonpug

+1

你需要閱讀C書或教程!我認爲你的意思是陣列不是你問題中的列表。 C中也沒有類.C不是面向對象的語言。 –

回答

1

刪除DEFINES,你不需要在這裏。

使用釋放calloc:

int* memory = (int*)calloc(bytes, sizeof(int)); 

你需要釋放此內存,當你用它做:

free(memory); 

參見:http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/

+0

這裏面我的initialize_memory塊?我不需要在頭文件中預先記錄除int *列表之外的任何內容? – antonpug

+0

Calloc返回指向新內存(通常只能用作數組)的指針,需要一個int *變量來存儲地址。我建議避免使用全局變量。在main()中定義它並將其作爲參數傳遞給任何需要它的函數通常會更好。您需要#include 才能使calloc可用。 – SystemParadox

0

如果數組的大小(不是列表)是在運行時確定的(即它不是代碼中的常量),那麼你必須像這樣malloc列表:

unsigned char *g_array; 
initialize_memory(size_t bytes) 
{ 
    g_array = calloc(bytes); 
} 

這會使g_array指向一塊大的內存bytes大。