我需要保留一個列表來模擬內存管理。該程序爲特定進程分配了一定數量的字節 - 進程是假的,因爲沒有實際進程,但基本上我想我所需要的只是一個整數列表。如何初始化C中的列表?
目前我有:
#define ALLOCSIZE
#define *int[ALLOCSIZE]
,我認爲這是正確的?我的C類有一個方法:
initialize_memory(int size)
{
}
我不想使用任何幻想,我想要的只是一個整數列表。
我需要保留一個列表來模擬內存管理。該程序爲特定進程分配了一定數量的字節 - 進程是假的,因爲沒有實際進程,但基本上我想我所需要的只是一個整數列表。如何初始化C中的列表?
目前我有:
#define ALLOCSIZE
#define *int[ALLOCSIZE]
,我認爲這是正確的?我的C類有一個方法:
initialize_memory(int size)
{
}
我不想使用任何幻想,我想要的只是一個整數列表。
刪除DEFINES,你不需要在這裏。
使用釋放calloc:
int* memory = (int*)calloc(bytes, sizeof(int));
你需要釋放此內存,當你用它做:
free(memory);
參見:http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/
這裏面我的initialize_memory塊?我不需要在頭文件中預先記錄除int *列表之外的任何內容? – antonpug
Calloc返回指向新內存(通常只能用作數組)的指針,需要一個int *變量來存儲地址。我建議避免使用全局變量。在main()中定義它並將其作爲參數傳遞給任何需要它的函數通常會更好。您需要#include
如果數組的大小(不是列表)是在運行時確定的(即它不是代碼中的常量),那麼你必須像這樣malloc列表:
unsigned char *g_array;
initialize_memory(size_t bytes)
{
g_array = calloc(bytes);
}
這會使g_array指向一塊大的內存bytes
大。
'DEFINE'?你的意思是'#define'嗎? – Pubby
對不起,#define是正確的 – antonpug
你需要閱讀C書或教程!我認爲你的意思是陣列不是你問題中的列表。 C中也沒有類.C不是面向對象的語言。 –