我使用vector<char>
发送,并通过套接字接收数据将翻一番。在这个向量中,我存储了不同类型的数据。无符号整数和双精度。 要从矢量解码数据,我使用copy
函数。C++:转换矢量<char>
vector<char> myVector = ... smth;
double value = 0.0;
copy(myVector.begin(), myVector.begin() + sizeof(value), &value);
它与整型没有问题。但是......
我的问题是,编译给出一个错误"free(): invalid pointer: 0x00000000006d0e30"
。我检查,问题是与双重价值,而不是向量。我查看了双倍数值的地址(0x6d0e38
)。为什么程序试图向后访问指针? 我会很高兴,如果你能说我,我做错了什么。这是解码信息的好方法吗?
谢谢你很多。
后所有失败的代码。请注意'sizeof(double)> sizeof(int)'。不能依赖于接收者和发送者端数据的字节顺序,所以不能,这不是一个好的设计。 –
请检查您的矢量的大小,而不管“但我知道这是超过sizeof(价值)!” – BatchyX
这只是一个错误。在这个消息之后,我只有一长串Qt库(Backtrace)。 是的,我知道double比int大。当我编码矢量我采取了整个大小的双。 –