【问题标题】:System::String to char* function.. memory leak?System::String to char* function..内存泄漏?
【发布时间】:2013-09-03 03:07:10
【问题描述】:

我正在使用 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”指令?或者我不调用它会导致内存泄漏?

【问题讨论】:

    标签: c++ visual-c++ memory-leaks visual-c++-2010


    【解决方案1】:

    因为你分配了一个数组,所以正确的说法是这样的:

    delete [] cPtr;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2011-11-09
      • 2017-11-04
      • 2018-10-09
      相关资源
      最近更新 更多