0

我正在使用 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”指令?还是我不调用它会出现内存泄漏?

4

1 回答 1

1

因为您分配了一个数组,所以正确的语句是这样的:

delete [] cPtr;

是的,没有它,你就会有内存泄漏。在这种特殊情况下,这并不重要,因为程序会立即结束,然后操作系统会恢复内存。

于 2013-09-03T03:24:12.523 回答