加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以使用C中的删除删除C POD?

发布时间:2020-12-16 10:28:40 所属栏目:百科 来源:网络整理
导读:结构像 struct ifoo_version_42 { int x,y,z; char *imageData;}; 其中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
结构像

struct ifoo_version_42 {
   int x,y,z;
   char *imageData;
};

其中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;
}

在这个结构上,它是否足以清理记忆形式,如果?

解决方法

删除结构不会递归删除其中的任何指针,因此不会释放imageData指向的char数组.

你对delete []的使用我也有些困惑.您可以使用delete []释放数组(使用new []分配),或使用delete释放单个对象(使用new分配).你不能混合它们,也没有说你如何分配一个或多个ifoo_version_42实例.例如,以下内容具有未定义的行为:

ifoo_version_42 *x = new ifoo_version_42;
del(x);

以下是好的:

ifoo_version_42 *x = new ifoo_version_42[1];
del(x);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读