我正在使用vector<char>
通过套接字发送和接收数据。在这个向量中,我存储了不同类型的数据。无符号整数和双精度浮点数。
为了从向量中解码数据,我正在使用copy
函数。
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)
。不能依赖数据在接收端和发送端的字节序相同,因此,这不是一个好的设计。 - Steve TownsendmyVector.begin() + sizeof(value)
之前验证myVector.size() <= sizeof(value)
。 - Nemo