ont*_*cks 2 c++ local-variables delete-operator
这是参考本主题中的讨论, 如何将char指针作为C++函数的out参数
在下面的代码中,我在哪里释放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;
}
Run Code Online (Sandbox Code Playgroud)
你分配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;
}
Run Code Online (Sandbox Code Playgroud)
没有指针,new或delete需要.
| 归档时间: |
|
| 查看次数: |
1483 次 |
| 最近记录: |