1. ホーム
  2. c++

[解決済み] C++ 構造体を削除する方法は?

2022-02-03 20:40:21

質問内容

私が作成した構造

   struct VideoSample
  { 
      const unsigned char * buffer;
      int len;
  };

   VideoSample * newVideoSample = new VideoSample;
   newVideoSample->buffer = buf;
   newVideoSample->len = size;

       //...

今すぐ削除するには?

どのように解決するのですか?

delete newVideSample;

に割り当てたメモリは解放されません。 newVideoSample->buffer 削除する前に明示的に解放する必要があります。

//Free newVideSample->buffer if it was allocated using malloc
free((void*)(newVideSample->buffer));

//if it was created with new, use `delete` to free it
delete newVideSample->buffer;

//Now you can safely delete without leaking any memory
delete newVideSample;

通常、このようなフリーの書き方は デストラクタ を実行したときに自動的に呼び出されるようにします。 delete 動的に作成されたオブジェクトを削除します。

言及いただいた@steveさん、ありがとうございます :)