【发布时间】:2014-11-21 09:38:08
【问题描述】:
我有一个家庭作业,我需要在其中分配内存给一个指针,该指针指向一个指针数组 (pNode**)。 下面是一个函数,它接收一个指针数组,并为其分配内存以及里面的所有相关指针和数据。
简而言之,函数应该为指向节点指针数组的指针分配内存。
**注意:我已经从函数中删除了与我的问题无关的某些元素。 函数 newGNode 为 Node 结构分配内存
int getChildren(pNode** childrenNodes)
{
*childrenNodes = (pNode*)malloc(sizeof(pNode));
for (int i = 0; i < NUM_OF_CHILDREN; i++)
{
childrenNodes[i] = (pNode *)newGNode();
}
return numOfChildren;
}
这就是我在主函数中的调用方式:
int main()
{
pNode * ng = NULL;
int test = getChildren(&ng);
}
无论我尝试做什么,我似乎都无法在主函数中获得分配“坚持”。在 getChildren 函数中,我可以在调试器中看到内存已按照我的需要精确分配。但是,当函数返回主函数时,ng 指针似乎已损坏,因为调试器告诉我它无法读取内存。
我在网上搜索并尝试了不同的方法,但似乎都没有。有谁知道为什么这不能按预期工作?我猜测内存分配中的某些内容是错误的,但似乎无法弄清楚是什么。
Here 是一个与我类似的问题,但它并没有真正帮助我
谢谢!
【问题讨论】:
-
你传递了两个参数,但原型只有一个。也许您忘记了帖子中的某些内容。
-
作为旁注:你不应该转换
mallocc-faq.com/malloc/mallocnocast.html的结果 -
您使用的是 C 还是 C++?您应该避免在 C++ 中使用 malloc(以及在 Modern C++ 中,新的)。
-
@G.Samaras 是的,谢谢,修复了帖子(反正第二个参数没有使用)
-
@user475680 我不认为他的意思是你应该使用 calloc 而不是 malloc。您根本不应该在 C++ 中使用任何 [re|m|c]alloc(除非有特殊情况)。如果您不使用 c++,请不要使用 c++ 标记问题。
标签: c arrays pointers void-pointers