在我的程序中,我有这样的行:
const char * str = getStr();
Run Code Online (Sandbox Code Playgroud)
我是否需要在函数结束时调用str []上的析构函数以防止内存泄漏?
Ste*_*sop 23
问题不包含足够的信息,这取决于具体做什么getStr().例如:
const char *getStr() {
return "boo";
}
Run Code Online (Sandbox Code Playgroud)
那你不能叫删除.
const char *getStr() {
return new char;
}
Run Code Online (Sandbox Code Playgroud)
那么你应该调用delete str;以避免内存泄漏(并且不得调用delete[]).
const char *getStr() {
return new char[10];
}
Run Code Online (Sandbox Code Playgroud)
那么你应该调用delete[] str;以避免内存泄漏(并且不得调用delete).
const char *getStr() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么它不会不管你做什么,要求任何形式的delete对str没有任何影响.
资源的所有权以及如何释放所拥有的资源是函数接口的一部分,并且应该在记录返回值实际存在的同时记录.