当前位置: 技术问答>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();
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的?记得在析构里释放是了.
里面有new的?记得在析构里释放是了.
|
局部对象在函数返回后会自动释放,深拷贝不需要担心无效引用的问题。如二楼要记得在析构中释放申请的空间。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。