我有保存指向其他樹節點下面的樹節點的結構:內存分配
struct node {
// ...
struct node* children[20];
}
的想法是,我要檢查是否存在node*
的children
內部和基於並且更深入到樹中。所以,當我分配node
我想有children
與20 NULL
值。 目前,我不要那樣做
- 我應該如何才能沒有得到像
Conditional jump or move depends on uninitialised value(s)
(Valgrind的)錯誤地分配這個數組? - 每次分配新節點時使用
struct node** children
並分配固定大小會更好嗎?
編輯:一個地方Valgrind的抱怨的例子:
for(int i=0;i<20;i++)
if(node->children[i] != NULL)
do_something_with_the_node(node->children[i]);
如果您動態分配結構,請使用'calloc'而不是'malloc'。或者使用'memset'將所有內容設置爲零。 –
'有條件的跳轉或移動取決於未初始化的值(s)'由valgrind報告意味着你有一個'if'語句,你在比較'node [x]',對嗎?你可以發佈該代碼嗎? – rubikonx9
@ g.tsh是的。我已經添加了一個例子。 – syntagma