在linux下,可执行程序循环把数组的内容写入文件,写之前验证过数组里面没有负数,写完后立即计算文件的md5值。
写入文件并保存一段时间后读出,发现数组成员有负数的情况,这时再计算md5值,和原来记录的不一样了。
这个文件比较大,有6.8G,不知道哪位曾碰到过这样的问题,我怀疑是不是与文件系统的缓存有关,原来计算md5时缓存里的内容还没完全写入到文件?
用文件比较工具判断下,看看哪里写错了。
写入以后读出数据有变化,这不太可能,除非是还有程序在写文件等
额,绝对是你自己读写程序的问题,你是以b方式打开的文件么?
数组可以一次性写入啊,为啥要用循环?
具体要看你代码才能知道问题出在哪。请贴出代码或伪代码。
数组在写入文件之前都遍历检验过,没有小于0的,但是写到文件后,再从文件中读出,就有小于0的情况。
这个数组是栈上的局部变量,有1G那么大,用的又是fwrite,要经历用户buffer -> Clib buffer - > 内核buffer -> 磁盘缓存这么多过程,估计是缓存的影响,
就是不知道内核的哪些配置影响缓存。