C ++ struct - 指向指针和动态数组的指针

时间:2015-05-05 22:17:43

标签: c++ arrays pointers dynamic struct

我想实现一个树trie并在键变量中插入一个示例值我正在使用一个指向指针的指针并创建一个包含100个元素的动态数组,但是我的应用程序在启动后崩溃了。

#include<iostream>
using namespace std; 

struct node {
  int key;
  node **children;          
};

int main() {
  node *child;          
  child = new node;
  child->children = new node *[100];
  child->children[20]->key = 90;        
  cout<<child->children[20]->key;

  return 0;
}

1 个答案:

答案 0 :(得分:0)

您需要为child->children[20]分配内存。您为child->children分配了内存,但没有为数组中的元素分配内存。您可以按如下方式执行此操作:

for (int i=0;i<100;++i) {
  child->children[i] = new node;
}

通过存储node *,您将存储node的地址,其中包含nodes地址数组的地址。这意味着您需要为层次结构的所有三个级别分配内存。您只为其中两个图层分配了内存。