├─◆ 狼盟首页 > 查看贴子 > 详细信息
楼主
哪位大虾能给我讲讲这个内存泄漏问题??(C++)
源文件如下:
#include <iostream>
class SimpleCat
{
public:
SimpleCat (int age, int weight);
~SimpleCat() {}
int GetAge() { return itsAge; }
int GetWeight() { return itsWeight };
private:
int itsAge;
int itsWeight;
};
SimpleCat::SimpleCat(int age, int weight)
{
itsAge=age;
itsWeight=weight;
}
SimpleCat & Function();
int main()
{
SimpleCat & rCat= TheFunction();
int age=rCat.GetAge();
std::cout<<"rCat is "<<age<<" years old!
";
std::cout<<"&rCat: "<<&rCat<<std::endl;
SimpleCat * pCat=&rCat;
delete pCat;
return 0;
}
SimpleCat & TheFunction()
{
SimpleCat * pFrisky=new SimpleCat(5,9);
std::cout<<"pFrisky: "<<pFrisky<<std::endl;
return *pFrisky;
}
在main()中的这些行
std::cout<<"rCat is "<<age<<" years old!
";
std::cout<<"&rCat: "<<&rCat<<std::endl;
SimpleCat * pCat=&rCat;
delete pCat;
书上说为了释放内存而用了这种方法(因为引用不能用DELETE),但是 delete pCat;之后rCat就成了一个无效的引用(因为引用了一个空对象,而引用不能引用空对象),这是为什么?怎么就成了空对象??我不太明白耶??