我在将C ++应用程序从32位转换为64位Linux时发现了一个有趣的错误。 我们的FileStore类实现了向/从文件保存/恢复结构。 除了在一个方法中,它总是在每个操作之前和之后调用fopen()和fclose()。 在32位平台上的这种(错误)方法中,它可以在没有错误的情况下fseek()和fread(),即使该文件之前已经通过其他方法fclose()了。在64位平台上,它每次都会在fread()上崩溃。 我想在32位平台上,即使在fclose()之后,基础FILE结构仍然存在,因此仍然可以访问它。 有没有人有进一步的信息为什么这个差异和任何其他陷阱与64位文件i / o?
答案 0 :(得分:5)
这对我来说听起来像是未定义的行为。您的问题的64位与32位方面是红鲱鱼。编译器可以自由删除您的主目录,或者在这种情况下提交联邦纳税申报表。