我有一個模塊化的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