释放c串数组

问题描述:

这里我有一个动态分配的c串数组。释放c串数组

  • 什么是释放这样一个数组的正确方法?

  • 需要单独释放每个元素A,如下面的代码所示?

谢谢。

#include <string.h> 
int main() 
{ 
    const char** A = new const char*[3]; 
    A[0] = (const char*)memcpy(new char[5], "str0", 5); 
    A[1] = (const char*)memcpy(new char[5], "str1", 5); 
    A[2] = (const char*)memcpy(new char[5], "str2", 5); 

    // Is this the proper way to free everything? 
    for (int i = 0; i < 3; ++i) 
     delete[] A[i]; 
    delete[] A; 
} 
+7

为什么不使用'std :: vector <:string>'并将内存管理留给标准库? – NathanOliver

+1

只需使用'vector '。 –

+2

'#include ' - 然而你没有使用'std :: string'。这是定义'std :: string','std :: wstring'等的头文件。我不知道当你包含这个头文件时你还有什么期望。 – PaulMcKenzie

是的。只要每个new ...[]delete[] ...匹配,一切都可以。