繁体   English   中英

内存管理QByteArray :: fromRawData()

[英]Memory Managing QByteArray::fromRawData()

在我的程序中,我有一个处理一些数据并将其发送回的函数。 在函数中,我使用以下内容分配了一个新的字节数组:

byte *buffer = new byte[bufferSize];

然后,我将其传递给一个填充有一些数据的库。 完成后,我想将其作为QByteArray发送回去。 所以我打电话给:

myByteArray = QByteArray::fromRawData(reinterpret_cast<const char*>(buffer), bufferSize);

字节数组返回并一切正常,但是现在我发生了内存泄漏(自从我调用此方法数千次以来,我的内存使用量就激增了,这是非常确定的)。 当使用new分配buffer时,在调用fromRawData之后无法删除它,因为myByteArray共享相同的数据指针。 文档状态The bytes are not copied. The QByteArray will contain the data pointer. The bytes are not copied. The QByteArray will contain the data pointer.

所以我的问题是,当myByteArray超出范围时,如何确保删除buffer 它超出了调用该函数的类的范围。

谢谢你的时间。

您可以直接从QByteArray开始,而不是使用new[]手动分配数组。

QByteArray myByteArray;
myByteArray.resize( bufferSize );
byte * buffer = myByteArray.data(); // Pointer to the memory allocated by the QByteArray
// Pass 'buffer' to library function..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM