2016-11-29 44 views
3

這裏我有一個動態分配的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 '並將內存管理留給標準庫? – NathanOliver

+1

只需使用'vector '。 –

+2

'#include ' - 然而你沒有使用'std :: string'。這是定義'std :: string','std :: wstring'等的頭文件。我不知道當你包含這個頭文件時你還有什麼期望。 – PaulMcKenzie

回答

6

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