我有一个模块化的C程序,其中每个模块使用静态全局变量共享访问模块功能之间的变量,但不能访问其他模块。现在需要一个动态分配的数组,可以对所有模块函数进行类似访问,但我不熟悉malloc
。以下是我想要做的一个简化例子。这似乎是正确的做法,但我很害羞,因为我找不到任何类似的例子(因为真实情况要复杂得多)。我可以维护一个像这样的静态指针,并使用malloc
和free
来分配来去的任何内存块,但保持指向当前块的良好指针?动态数组的C静态指针
static int *dataBlock = NULL;
static int dataSize = 0, dataCursor = 0;
// Init - called externally
int initData(size) {
if (dataBlock || dataSize > 0) {
return -1;
}
dataBlock = malloc(sizeof(*dataBlock) * size);
if (!dataBlock) {
return -1;
}
dataSize = size;
dataCursor = 0;
return 0;
}
// Push - called externally
int pushData(value) {
if (dataCursor >= dataSize) {
return -1;
}
dataBlock[dataCursor] = value;
dataCursor++;
return dataCursor;
}
// Free - called externally
void freeData() {
free(dataBlock);
dataSize = 0;
dataCursor = 0;
dataBlock = NULL;
}
你可以。如果事实上,我不明白为什么限制自己到任何特定的数据大小。一旦电流限制用尽,您可以“重新分配”该块。 – StoryTeller