是否可以使用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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |