在方法C/C++中释放动态分配的char*

Szy*_*una 0 c++

假设我有这样的代码:

char* Complex::getString(void)
{   
        char *p;
        int n = snprintf( NULL, 0, "%.6f+%.6fi", (float)_re, (float)_im);
        p = (char*)malloc(n+1);
        sprintf( p,  "%.6f+%.6fi", (float)_re, (float)_im);

        return p;
}
Run Code Online (Sandbox Code Playgroud)

我应该释放p,如果是的话 - 在哪里以及为什么?

Mik*_*our 10

如果您正在编写C With Classes,那么您必须记录调用者负责释放内存.它不能在此函数中释放,因为您正在返回指向它的指针.

如果你正在编写C++,那么生活太短暂,无法搞乱原始指针.返回a std::string以便自动管理内存.