能的fopen或fstream的等意外销毁文件C/C++
比方说,我有地方在我的程序打开文件与
fopen
然后我的程序做别的东西的功能(比如,试图计算的东西)然后它崩溃,因为一些空指针或堆栈溢出或分段错误等。有没有可能会破坏/弄乱我打开的文件?能的fopen或fstream的等意外销毁文件C/C++如果我打开它写作,该怎么办?那会更危险吗?
如果你打开阅读然后没有,你不能损坏文件的文件。
如果你打开写然后是文件,总是可以离开文件中的某些损坏状态。
我想我可以非常依赖操作系统。但是,常识说你的答案是正确的。 – bolov
呃,任何使您的数据易受攻击的OS/FS无法使用。这不仅仅是常识,它还是必需的功能。 –
至少在某些平台和文件系统类型中,读取文件将更新与文件关联的一些元数据 - 特别是时间戳信息。所以读取实际上涉及到写入文件系统的某个部分。在Linux filesytems上,据我所知,所讨论的元数据区域的大小是固定的,我认为写入失败可能会导致文件或目录有缺陷。无论如何,我从来没有见过它发生。但我不认为它可以安全地假设,在任何情况下,读取过程中的失败都不可能让文件系统不快乐。 –
如果您打开一个文件进行写入,并且给定的文件存在,那么它的内容无论如何都会被销毁。 –
哪种语言,C或C++?他们是不同的语言。 C++有'ifstream',C没有。 C++有流提取操作符,可以被重载以读取自定义类的实例。 –
打开文件内容破坏取决于您打开的方式。 w和w +并且内容消失了。 a,r + a +和内容仍然存在。 – user4581301