最佳答案
背景: 我正在努力理解指针,我们几周前才在学校看到它们,而今天在练习的时候我碰到了一个傻瓜?问题,它可以是超级直接的,但我几乎没有编程经验。
关于删除指针,我已经看到了很多问题,但它们似乎都与删除一个类有关,而不是一个“简单”指针(或者不管正确的术语是什么) ,下面是我正在尝试运行的代码:
#include <iostream>;
using namespace std;
int main() {
int myVar,
*myPointer;
myVar = 8;
myPointer = &myVar;
cout << "delete-ing pointers " << endl;
cout << "Memory address: " << myPointer << endl;
// Seems I can't *just* delete it, as it triggers an error
delete myPointer;
cout << "myPointer: " << myPointer << endl;
// Error: a.out(14399) malloc: *** error for object 0x7fff61e537f4:
// pointer being freed was not allocated
// *** set a breakpoint in malloc_error_break to debug
// Abort trap: 6
// Using the new keyword befor deleting it works, but
// does it really frees up the space?
myPointer = new int;
delete myPointer;
cout << "myPointer: " << myPointer << endl;
// myPointer continues to store a memory address.
// Using NULL before deleting it, seems to work.
myPointer = NULL;
delete myPointer;
cout << "myPointer: " << myPointer << endl;
// myPointer returns 0.
}
所以我的问题是:
对于这个长长的问题,我很抱歉,希望尽可能地把这个问题说清楚,同时也想重申一下,我没有什么编程经验,所以如果有人能用外行的术语来回答这个问题,我将不胜感激!