无法为结构分配指针数组

时间:2016-05-22 18:45:01

标签: c++ arrays pointers struct malloc

我试图为结构分配一个指针数组,但我的代码出了问题。

这是我的结构:

struct Brick {
  GameObject2D* handle_;
};

Brick** bricks_;

这就是我试图为它分配内存的方式:

int bricks_amount_ = 10;    

bricks_ = (Brick**)malloc(sizeof(Brick*) * bricks_amount_);

程序崩溃。我已经对它进行了调试,以便调试问题的位置并在此行崩溃:

for (unsigned short int i = 0; i < bricks_amount_; i++){
  bricks_[i]->handle_ = new GameObject2D(); <---------- CRASH!
}

有什么建议吗?

PS:对不起我的英文:P

=============================================== ==========================

[溶液]

最后我决定使用std :: vector代替原始指针:

bricks_.resize(bricks_amount_);

但是我试图让malloc采用不同的方式,它也有效:

bricks_ = (struct Brick*)malloc(sizeof(struct Brick) * bricks_amount_);

或者这个:

bricks_ = new Brick[bricks_amount_];

感谢那些想要帮助的人!

2 个答案:

答案 0 :(得分:0)

这是C ++:

  • 请勿使用malloc,请使用new
  • 不要使用普通数组,请使用std::vectorstd::array
  • 不使用原始指针,请使用std::unique_ptr

答案 1 :(得分:-1)

不要使用

Bricks **   //will be a 2 dimensional array 

改为使用

Bricks *   //will be a 1 dimensioanal array

如果你想要一个单维数组

然后做

`Bricks * bricks_  = (Bricks *)malloc(sizeof(Brick) * bricks_amount_ );

`

然后你可以安全地做到没有崩溃

for (unsigned short int i = 0; i < bricks_amount_; i++){


bricks_[i]->handle_ = new GameObject2D(); <----------   There will not be CRASH!
}