所以,例如,如果我有一个带整数的类,当我完成该类并且我想将其从内存中删除时,我是否需要:
sum
或者我可以停止引用该类:
vector
答案 0 :(得分:2)
delete &myInteger;
是将指针释放到生成在堆栈上的myInteger
的无效尝试。要释放myInteger
的内存(或注册),您只需要退出它所在的范围。
{
int myInteger;
myInteger = 5;
} // myInteger goes away
但是,如果您有动态内存分配:
int* myInteger = new int;
你有责任明确释放它
int* myInteger = new int;
*myInteger = 5;
delete myInteger; // release the memory pointed to, not the pointer
在现代C ++中,避免语言的这些尖锐边缘并使用C ++ 11智能指针(例如std::unique_ptr
和std::shared_ptr
来处理问题是一种良好的做法。你:
{ // start scope
std::unique_ptr<int> myInteger std::make_unique<int>();
*myInteger = 5;
} // end scope -- unique_ptr cleans up for us.