>我正在尝试将指针数组分配给结构体,但我的代码有问题。
这是我的结构:
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::vector
或std::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!
}