假设我有这样的代码:
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以便自动管理内存.