以下是令我困惑的代码片段:
T* pop(){
if(head == 0)
return 0;
T* result = head->data;
Link* oldHead = head;
head = head->next;
delete oldHead;
return result;
}
result
指针用于指向头部对象的“数据字段”。之后,head
将被删除。由于result
字段与data
一起被删除,head
是否必须指向空或空格?
答案 0 :(得分:3)
由于
result
字段与data
一起被删除,head
是否必须指向空或空格?
执行时
delete oldHead;
oldHead
的内存已取消分配。但是,除非delete data
的析构函数中也Link
,否则data
仍然是有效指针。因此,可以返回result
并继续使用调用函数中的返回值。
如果你有
Link::~Link() {}
没有问题。
但是,如果你有
Link::~Link() { delete data; }
有问题。