我正在使用Visual C ++ 2010.我有以下函数将System :: String ^对象转换为char指针(char *)。
void string2charPtr(System::String^ original, char *&out) {
int length = original->Length;
out = new char[length+1];
for (int i = 0; i < length; i++)
out[i] = (char) original[i];
out[length] = '\0';
}
使用示例:
int main(void) {
char* cPtr;
System::String^ str = gcnew System::String("Hello");
string2charPtr(str, cPtr);
delete cPtr;
return 0;
}
是否需要“删除cPtr”指令?或者如果我不调用它,会有内存泄漏吗?
答案 0 :(得分:1)
因为您分配了一个数组,所以正确的语句是:
delete [] cPtr;
是的,没有它,你有内存泄漏。在这种特殊情况下,它并不重要,因为程序会在之后立即结束,然后操作系统会恢复内存。