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

是否可以使用C中的删除删除C POD?,第1张

概述结构像 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 P 结构像

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);
总结

以上是内存溢出为你收集整理的是否可以使用C中的删除删除C POD?全部内容,希望文章能够帮你解决是否可以使用C中的删除删除C POD?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1220457.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存