假设我有这样的代码:
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/