Ich habe ein modulares C-Programm, wo jedes Modul statische globale Variablen für die gemeinsamen Zugriff von Variablen zwischen den Funktionen des Moduls verwendet, aber nicht an anderen Module. Jetzt brauchen Sie ein dynamisch zugewiesenes Array, das für alle Modulfunktionen gleichermaßen zugänglich ist, aber ich bin nicht vertraut mit malloc
. Unten ist ein vereinfachtes Beispiel von dem, was ich versuche zu tun. Dies scheint der richtige Weg zu sein, aber ich bin schüchtern, da ich keine ähnlichen Beispiele finden kann (und da das echte Ding viel komplizierter ist). Kann ich einen statischen Zeiger wie diesen beibehalten und die malloc
und free
verwenden, um zu bestimmen, welche Speicherblöcke kommen und gehen, aber einen guten Zeiger auf den aktuellen Block behalten?C statische Zeiger für dynamisches Array
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;
}
Sie können. Und wenn ich das sehe, sehe ich nicht, warum man sich auf eine bestimmte Datengröße beschränkt. Sie können den Block neu zuweisen, sobald das aktuelle Limit erschöpft ist. – StoryTeller