【发布时间】:2013-12-01 00:25:50
【问题描述】:
假设我有一个指向 Student 对象的临时指针(不管 Student 的定义是什么 - 假设它不包含指针数据成员),我使用如下:
int main(){
Student *temp;
Student *s1 = new s1("John", 21);
Student *s2 = new s2("Jane", 23);
//do whatever;
temp = s1;
s1 = s2;
s2 = temp;
delete s1;
delete s2;
return 0;
}
由于我将new 用于s1 和s2,因此我知道对象是在堆中创建的,因此我需要使用delete 运算符来摆脱它们。我的问题是 - 我需要“删除临时”吗?如果不是,为什么?如何管理“临时”内存?有人能解释一下内存管理器如何处理这个指针,当它超出范围时会发生什么?
【问题讨论】:
-
无关:
delete s1, s2是什么? -
1.
temp指向什么对象? 2. 您是否已经通过不同的指针删除了该对象?回答这两个,你应该知道你的问题的答案。 -
@0x499602D2 :已修复,谢谢。