Qt: memcpy failed.. 如何复制?

Qt: memcpy failed.. How to copy?

我今天的问题是关于 Qt 和 memcpy() 函数的。 我有一个 QByteArray i_byte_array 包含我需要的原始数据。我尝试的第一件事是将这些数据复制到 char* l_array 中。 这给了我:

void blablafunctionblabla(const QByteArray& i_byte_array)
{
   char* l_array = (char*)malloc(i_byte_array.size());
   memcpy(l_array, i_byte_array, i_byte_array.size());
   // OR: char* l_array = i_byte_array.data(); // same result
}

当我 运行 代码时,我希望复制 i_byte_array 的全部内容,即: i_byte_array values

结果我只得到这个...: l_array value

似乎复制在第一个/0处停止了,忽略了我要求他复制的大小..

所以我的问题是为什么 memcpy 函数会发生这种情况?我需要如何继续才能复制所有原始数据? (甚至 /0 这对我来说是有用的数据)

其实memcpy并没有忽略空字符。我想 IDE(可能是 Qt Creator)会忽略空字符,所以您看不到 char 字符串的全部内容。

如果您通过以下方式将 l_array 导入到 QByteArray

QByteArray ba = QByteArray::fromRawData(l_array, i_byte_array.size());

您会看到 ba 的内容与 i_byte_array 相同。

你可以查看 SO 的 memcpy 问题:How could I copy data that contain '[=16=]' character