我创建的结构:
struct VideoSample
{
const unsigned char * buffer;
int len;
};
VideoSample * newVideoSample = new VideoSample;
newVideoSample->buffer = buf;
newVideoSample->len = size;
//...
Run Code Online (Sandbox Code Playgroud)
现在怎么删除呢?
Ama*_*osh 25
delete newVideSample;
Run Code Online (Sandbox Code Playgroud)
这不会释放您分配给的任何内存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;
Run Code Online (Sandbox Code Playgroud)
通常,这种释放是在类的析构函数中编写的,以便delete在动态创建的对象时自动调用它.
谢谢@steve提到它:)
delete newVideoSample;
Run Code Online (Sandbox Code Playgroud)
但是如果new和delete它们处于相同的上下文中,那么最好不要跳过它们而只是在堆栈上创建它:
VideoSample newVideoSample = {buf, size};
Run Code Online (Sandbox Code Playgroud)
在这种情况下,不需要清理.
| 归档时间: |
|
| 查看次数: |
59128 次 |
| 最近记录: |