【发布时间】:2011-05-28 10:20:44
【问题描述】:
我想我可以只使用一个列表,但此时我只是好奇为什么以下代码不起作用:
struct treeNode{
char symbol;
double freq;
int left;
int right;
};
treeNode *tree;
int nOS = 16;
tree = (treeNode *)malloc(sizeof(treeNode) * nOS);
list<treeNode> treeList;
初始化树中的所有元素后,我尝试将它们推送到 treeList 并出现分段错误,如果树是 treeNode 树[nOS],则不会发生,但我正在处理未知数量的元素,所以我需要能够使用 realloc,因此使用 malloc:
for (int i = 0; i < nOS; i++) {
treeList.push_back(tree[i]);
}
我尝试将 tree[i] 转换为不同数量的东西:(treeNode), (const treeNode) 但我不知道如何让它工作。谢谢!
【问题讨论】:
-
为什么是 malloc?为什么不使用向量?还是另一个清单?什么是符号列表?
-
好吧,一开始我就说我知道我可以使用列表,但是我很好奇为什么这不起作用,以加深我对malloc,列表,c/c++的理解等。
-
好的,但是什么是 symbolList - 你是说 treeList 吗?
-
这是一个错字,我正在尝试选择更合适的名称,已修复它。
-
是
treeNodetypedefed 吗?它应该是sizeof (struct treeNode)和类似的替代品。
标签: c++ list pointers casting tree