我需要保留一个列表来模拟内存管理。该程序为特定进程分配了一定数量的字节 - 进程是假的,因为没有实际进程,但基本上我想我所需要的只是一个整数列表。如何初始化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不是面向对象的语言。 –