Rel*_*lla 3 c++ types pod delete-operator data-structures
结构像
struct ifoo_version_42 {
int x, y, z;
char *imageData;
};
Run Code Online (Sandbox Code Playgroud)
在哪里imageData
是这样的imageData = new char[50000];
我们可以执行以下操作:
template< typename T >
void del( T a ) // we promise to use this only on C Plain Old data structs=)
{
delete a;
}
Run Code Online (Sandbox Code Playgroud)
在这个结构上,它是否足以清理记忆形式,如果?
此功能模板也可以在非POD类型上"起作用".它与delete[] a;
直接调用没有什么不同.
但是,这不会删除与之关联的内存imageData
.这通常是你在析构函数中做的事情.
删除结构并没有递归删除在它的任何指针,因此不会释放炭的阵列通过指向imageData
.
我对你的使用也有点困惑delete[]
.您可以使用释放数组(已分配new[]
)delete[]
或释放单个对象(已分配new
)delete
.你不能混合它们,也没有说你如何分配一个或多个实例ifoo_version_42
.例如,以下内容具有未定义的行为:
ifoo_version_42 *x = new ifoo_version_42;
del(x);
Run Code Online (Sandbox Code Playgroud)
以下是好的:
ifoo_version_42 *x = new ifoo_version_42[1];
del(x);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
228 次 |
最近记录: |