如果在Windows,MacOS等面向普通用戶的操作系統上用emacs,vim等編寫和運行自己寫的C/C++程序,並且不小心製造了內存泄漏,是否有抹去或改寫操作系統中的個人文件(如文檔)的風險?

另外,如果採用Eclipse,VS或者QTCreator等的IDE環境中來寫的話,是否會有一定的保障措施?如果有的話,保障到什麼程度呢?


如果你的代碼沒有威脅到操作系統內核的穩定(不能構成提權或者消耗太多資源),又不直接讀寫磁碟上的文件,把整個系統搞崩的概率是很小的。

現代的IDE更多時候只是一個超強的文本編輯器和build管理工具、調試器的前端,它並不是一個supervisor。
內存泄露導致系統運行緩慢,導致用戶隨機結束TA所認為不重要的進程,導致進程正在讀寫的文件損壞……並不是沒有可能嘛

會。

內存泄漏導致可用內存不足。

如果是比較舊的操作系統沒有處理好這個情況導致系統崩潰,是可能丟失文件的。

或者,系統覺得內存不足隨機殺死應用程序剛好那個程序在寫入文件,也是可能導致文件損壞的。

不會,內存泄露本來指的是不斷有無法回收的內存被申請,最終耗盡資源,不可能造成寫文件。不過你的意思可能亂寫野指針導致讀寫錯誤吧,這種情況也不用擔心,首先操作系統會保護關鍵代碼段和文件,你的程序沒許可權寫,其次亂寫代碼段達到操作文件的效果概率約等於0


謝邀,我對此瞭解不多,只知道內存泄漏的行為是未定義,沒有辦法做任何假設。

如果代碼沒有寫磁碟操作的話應該不會直接損壞的磁碟上的文件,但有可能破壞了其他程序的內存結構並且這些程序有權寫磁碟,就有可能損壞了。

用IDE也很難對此有保證,IDE應該只是閑著沒事幫你編譯一下然後告訴你語法錯誤,然後給你的編譯器選項加一些圖形化控制方式而已,跑在真機上的C程序手動運行和讓IDE幫你運行應該沒什麼差別。

知識有限,有錯誤歡迎指出。


內存和磁碟_(:з」∠)_
不會,內存泄漏是指申請的內存沒釋放,你沒有主動刪文件的代碼,就不會有這問題出現


推薦閱讀:
相關文章