这是引用本主题中的讨论
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保留在函数外部。删除此变量中的值后,将释放数组使用的堆内存。

09-27 16:51