快要被坑死了,在Windows VS下跑的好好的代码,在Linux下就一直验证不通过。
逐步确认,最后发现是代码里用了unsigned long类型的变量,在Linux下与Windows下的数据长度是不同的。。。
参考:https://blog.csdn.net/zxh2075/article/details/87928286
不同平台下C\C++数值数据类型长度如下:
类型 win32 win64 linux32 linux64
char 1 1 1 1
short 2 2 2 2
int 4 4 4 4
long 4 4 4 8
long long 8 8 8 8
float 4 4 4 4
double 8 8 8 8
void* 4 8 4 8
其中long类型和指针类型需要特别注意,编写跨平台的软件时尽量不要使用long类型,或者需要对long类型做特殊处理。