2011-11-13 98 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大。