当前位置:  技术问答>linux和unix

深度复制是否会内存泄漏?

    来源: 互联网  发布时间:2016-06-09

    本文导语:  Qt编程中,由Designer生成以下代码,稍作了一些修改如下: typedef struct {     int width, height, depth;     const unsigned char *data;     ulong compressed;     int numColors;     const QRgb *colorTable;     bool alpha; }  E...

Qt编程中,由Designer生成以下代码,稍作了一些修改如下:

typedef struct {
    int width, height, depth;
    const unsigned char *data;
    ulong compressed;
    int numColors;
    const QRgb *colorTable;
    bool alpha;

}  EmbedImage ;

QImage CvtImage(const EmbedImage *pImg)
{
QByteArray baunzip = qUncompress( pImg->data, pImg->compressed );
QImage img((uchar*)baunzip.data(),pImg->width,pImg->height,pImg->depth,(QRgb*)pImg->colorTable,pImg->numColors,
QImage::BigEndian);
  img = img.copy();
  img.setAlphaBuffer( pImg->alpha );
  return img;
}

/*************** 问题:****************/
img.copy()是一个深度复制,在其它地方使用到时,是否会有内存泄漏。
是否img=img.copy()就是解决以上顾虑的举措?否则应该是:
QImage img((uchar*)baunzip.data(),pImg->width,pImg->height,pImg->depth,(QRgb*)pImg->colorTable,pImg->numColors,
QImage::BigEndian);
  img.setAlphaBuffer( pImg->alpha );
  return img.copy();

|
img = img.copy(); 

里面有new的?记得在析构里释放是了.

|
局部对象在函数返回后会自动释放,深拷贝不需要担心无效引用的问题。如二楼要记得在析构中释放申请的空间。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问下,TCQ/NCQ的队列深度是硬盘决定的吧?如何获取深度值呢?谢谢!
  • 深入JAVA对象深度克隆的详解
  • jQuery 记录滚动深度的插件 Scroll Depth
  • 深度理解try{}cathc(){}
  • 深度游戏中心
  • 50分求与【Linux 服务器 配置维护,网站架设】相关深度中等偏下的经典书籍,荐者有分!
  • 迅速确定php多维数组的深度的方法
  • 在Solaris上显示xpm格式的图片,为什么显示的效果好象是位图深度不够似的?
  • C语言实现计算树的深度的方法
  • 快来救命啊。EJB调用EJB问题。深度郁闷,高分相送。
  • 请教:linux下的有名管道 fifo深度多大?
  • 一个有深度的问题(对信号量操作不熟者请勿进)
  • C++深度优先搜索的实现方法
  • 深度分析mysql GROUP BY 与 ORDER BY
  • 解析JAVA深度克隆与浅度克隆的区别详解
  • Java Web项目前端规范(采用命名空间使js深度解耦合)
  • 深度分析正则(pcre)最大回溯/递归限制
  • 纯C语言:检索与周游广度深度遍历源码分享
  • SQLSERVER的非聚集索引结构深度理解
  • 深度揭露Oracle索引使用中的限制


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3