我对c很新,所以如果我的步骤有误,请告诉我。比方说,我有类似以下内容:我应该如何malloc/realloc包含一个数组的结构?
struct graphNode{
int val;
graphNode* parent;
int succSize;
int succMaxSize;
graphNode* succ[1];
};
我将创建一个新的节点:
graphNode *n;
n = malloc(sizeof(struct graphNode));
assert(n);
n->val = 1;
n->parent = NULL;
n->succSize = 0;
n->succMaxSize = 1;
然后,如果我想给继任添加到节点
if (n->succSize == n->succMaxSize){
n->succ = realloc(n->succ, sizeof(graphNode*) * n->succMaxSize * 2);
n->succMaxSize *= 2;
}
n->succ[succSize] = n2; //n2 is of type graphNode*
succSize++;
这是正确的吗?我是否需要重新分配结构体,或者是否足够重新分配数组?我需要对初始数组使用malloc吗?初始数组的大小应该包含在我的malloc调用中吗?
你的初始结构不需要realloc。你想实现什么?我觉得realoc并不高雅。 –
为什么不使用C++并将这个问题引入生活中? –
@EdHeal为什么不使用Python元组或JavaScript数组来完全避免内存管理? – 2013-10-17 22:08:36