我有一个简单的问题,但有时候我有点困惑.
第一个代码:
Person *ptoPerson = new Person;
cout << ptoPerson->printMsg("Hi") << endl;
delete ptoPerson;
Run Code Online (Sandbox Code Playgroud)
第二个代码:
Person p;
Person *ptoPerson = &p;
cout << ptoPerson->printMsg("Hi") << endl;
delete ptoPerson;
Run Code Online (Sandbox Code Playgroud)
删除指针时会发生此问题.
第一个代码工作正常,指针删除,但第二个代码在实现它时出现问题在运行时.
为什么第二个代码无法删除指针?
我认为这两种情况下的指针是一个指针,可以删除它,或者我错了.
我认为这两种情况下的指针是一个指针,可以删除它,或者我错了.
你错了.
你不"删除一个指针"; 你删除你使用你创建的东西new(通过将指针传递给delete运算符).
在这里,你没有使用任何东西new,所以没有什么可以做的delete.
理想情况下,您的代码看起来像这样:
Person p;
cout << p.printMsg("Hi") << endl;
Run Code Online (Sandbox Code Playgroud)