无法将指针数组分配给结构



>我正在尝试将指针数组分配给结构体,但我的代码有问题。

这是我的结构:

struct Brick {
  GameObject2D* handle_;
};
Brick** bricks_;

这就是我尝试为其分配内存的方式:

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

程序崩溃。我已经对它进行了 devenv 以调试问题所在,它在此行崩溃:

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_];

感谢想要帮助的人!

它C++:

  • 不要使用malloc,使用new
  • 不要使用纯数组,使用 std::vectorstd::array
  • 不要使用原始指针,使用std::unique_ptr

不要使用

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!
}

相关内容

  • 没有找到相关文章