管理QByTearray :: FromRawdata()的内存

Memory Managing QByteArray::fromRawData()

本文关键字:内存 FromRawdata QByTearray 管理      更新时间:2023-10-16

在我的程序中,我具有处理一些数据并将其发送回的功能。在功能中,我分配了一个新的字节数组:

byte *buffer = new byte[bufferSize];
然后,我将其传递给填充一些数据的库。完成后,我想将其发送回QByteArray。所以我打电话:
myByteArray = QByteArray::fromRawData(reinterpret_cast<const char*>(buffer), bufferSize);

字节阵列返回,一切都很好,但是我现在有一个内存泄漏(自从我的RAM使用Skyrockets以来,自从我打电话数千次以来就可以肯定(。当我将buffer分配给New时,我在调用fromRawData后无法将其删除,因为myByteArray共享相同的数据指针。文档状态 The bytes are not copied. The QByteArray will contain the data pointer.

所以我的问题是,当myByteArray脱离范围时,如何确保buffer被删除?它不在类中的范围。

感谢您的时间。

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

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