这是引用本主题中的讨论
How to have a char pointer as an out parameter for C++ function
在下面的代码中,我应该在哪里释放 pTemp 的内存?不需要吗?
如果不是整数数组,而是整数数组,情况是否会有所改变?
void SetName( char **pszStr )
{
char* pTemp = new char[10];
strcpy(pTemp,"Mark");
*pszStr = pTemp;
}
int main(int argc, char* argv[])
{
char* pszName = NULL;
SetName( &pszName );
cout<<"Name - "<< pszName << endl;
delete [] pszName;
cin.get();
return 0;
}
最佳答案
一旦函数退出,就将变量本身pTemp
释放,因为它首先分配在堆栈上。将指针放入pTemp
的数组通过传递给它的参数pszName
保留在函数外部。删除此变量中的值后,将释放数组使用的堆内存。