我试图为结构分配一个指针数组,但我的代码出了问题。
这是我的结构:
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_];
感谢那些想要帮助的人!
答案 0 :(得分:0)
这是C ++:
malloc
,请使用new
std::vector
或std::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!
}