C如何删除一个结构?

新手上路,请多包涵

我创建的结构:

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

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

       //...

现在怎么删除呢?

原文由 Rella 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 396
2 个回答
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 提到它:)

原文由 Amarghosh 发布,翻译遵循 CC BY-SA 2.5 许可协议

您创建了一个 Videosample 的对象,所以您只需要使用 use delete..

 VideoSample * newVideoSample = new VideoSample;
delete newVideoSample;

原文由 Satyam 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题