【发布时间】:2015-02-13 09:40:27
【问题描述】:
给定以下结构声明:
struct Student
{
char * name;
int * test;
float gpa;
};
int main() {
Student *newObject = new Student;
newObject->name = new char[10];
newObject->test = new int;
return 0;
}
我的问题是如何销毁创建的动态变量?
我尝试了 delete newObject->name; 和 delete newObject->test; 但它似乎不起作用,因为它向我显示了与之前相同的地址 delete 。使用delete newObject; newObject = nullptr;删除对象就够了吗?
【问题讨论】:
-
delete不会改变指针指向的地址。 -
始终匹配
new->delete和new[]->delete[]。deleteing 某些东西不会神奇地将指针设置为 null,如果它对您的程序很重要,您将不得不自己做。旁注:不要使用new和delete。 -
user657267 在他的旁注中可能的意思是,除非您是 C++ 学生,否则您应该更喜欢使用 C++11 工具,例如
std::unique_ptr和std::shared_ptr,或者,当然, 堆栈分配。
标签: c++ pointers dynamic-allocation