【发布时间】:2013-05-12 00:18:36
【问题描述】:
我正在尝试理解 C++ 中的内存部分。我试图在使用下面的代码生成输出后释放内存。
问题:
是否需要使用if语句来释放内存?
代码:
int main(){
char *pc;
int *pi;
pc = new char('a');
pi = new int(8);
cout << *pc << endl;
cout << *pi << endl;
//What's the purpose for doing if(pc) and if (pi) below?
if(pc){
delete pc;
}
if(pi){
delete pi;
}
return 0;
}
我可以这样做吗? 诠释主要(){ 字符 *pc; int *pi;
pc = new char('a');
pi = new int(8);
cout << *pc << endl;
cout << *pi << endl;
delete pc;
delete pi;
return 0;
}
【问题讨论】:
-
不,delete 会自行执行空值检查。看到这个->stackoverflow.com/a/4190737/1898811
-
强制智能指针引用。如果你使用它们,你不必担心这些。