const char*上的析构函数

Ond*_*dra 8 c++ destructor

在我的程序中,我有这样的行:

    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)

那么它不会不管你做什么,要求任何形式的deletestr没有任何影响.

资源的所有权以及如何释放所拥有的资源是函数接口的一部分,并且应该在记录返回值实际存在的同时记录.