gpt4 book ai didi

c++ - 在哪里释放在函数内部创建的动态数组的内存

转载 作者:太空狗 更新时间:2023-10-29 23:33:37 25 4
gpt4 key购买 nike

这是引用此处本主题中的讨论 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 分配给 *pszStr,并且 pszStr 指向 pszName

因此,delete [] pzxName 根据需要删除分配的内存。

混淆是一个很好的例子,说明为什么你应该避免奇怪的 C 风格习惯用法和手动内存管理。这样会更清楚:

#include <string>
#include <iostream>

std::string GetName() {return "Mark";}

int main() {
std::string name = GetName();
std::cout << "Name - " << name << std::endl;
}

没有指针,需要newdelete

关于c++ - 在哪里释放在函数内部创建的动态数组的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com