2016-11-29 11 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

'ベクトル'を使用してください。 –

+2

'#include ' - しかしあなたは 'std :: string'の使用に失敗しました。これは、 'std :: string'、' std :: wstring'などを定義するヘッダーです。あなたがこのヘッダーをインクルードしたときに他に何を期待しているのか分かりません。 – PaulMcKenzie

答えて

6

はい。 new ...[]delete[] ...と一致する限り、すべてが正常です。

関連する問題