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

标签 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;
}

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

最佳答案

如果您正在编写带类的 C,那么您必须记录调用者负责释放内存。它无法在此函数中释放,因为您返回的是指向它的指针。

如果您正在编写 C++,那么生命就太短暂了,无法摆弄原始指针。返回一个 std::string 以便自动管理内存。

关于c++ - 在方法 C/C++ 中释放动态分配的 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19703096/

相关文章:

c++ - 如何按字母顺序将字符串列表(文本格式)插入到容器中?

c++ - MSVC Address Sanitizer - 有什么理由在发布版本中使用它吗?

c++ - 视觉 C++ : Compiler Error C4430

c++ - 我们在 vector 中没有的多集中有什么更好的特征?

c++ - 计算机中的字长与 int 或 long 有何关系

c++ - 在 C++ 模板中处理字符串

c++ - C++ memory_order_acquire/release问题

java - 从 C++ 到 Java 行的命名管道连接,每个字符之间有空格

c++ - 当给定 const char * 作为模板化参数的类型时,为什么编译器选择 bool 而不是 string_view?

c++ - 使用容器中元素的别名使用 std::list::remove 删除元素是否正确?