Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
5年前关闭。
Improve this question
考虑以下代码:
它崩溃了,但我不知道为什么。我以为删除空指针是没有操作的。
我什至需要删除结构吗?在堆上创建结构是不好的做法吗?在堆栈上创建它们更好吗?
(如果您在全局范围内编写
而且,是的,您应该避免动态分配-毫无理由地使用它会使代码复杂化,当然,这也没有充分的理由。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
5年前关闭。
Improve this question
考虑以下代码:
struct A {
int someInt;
};
A *a = new A;
A *b;
delete a; // ok
delete b; // crash
它崩溃了,但我不知道为什么。我以为删除空指针是没有操作的。
我什至需要删除结构吗?在堆上创建结构是不好的做法吗?在堆栈上创建它们更好吗?
最佳答案
删除空指针是一个禁忌,是的,因此,如果b
是一个空指针,那么就可以了。
但事实并非如此。这是一个不确定的变量,值不确定。
这是一个空指针:
A* b = nullptr;
(如果您在全局范围内编写
A* b;
,或者在函数中编写static A* b;
,或者正在定义静态类成员,则b
具有静态存储期限,并且会自动为您初始化零;这是规则。)而且,是的,您应该避免动态分配-毫无理由地使用它会使代码复杂化,当然,这也没有充分的理由。
关于c++ - C++:删除指向结构的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27612112/