0

我最近開始使用C++進行編碼,並且遇到了一些我認爲需要關於計算機知識的錯誤。編譯代碼太快會產生錯誤

當我編寫一個簡單的代碼(在Visual Studio Express 2013中)時,我們假設一個「Hello World!」例如,我內部版本開始不調試成功。 然後,當我編輯我的代碼打印兩個數字的總和時,例如,當我嘗試構建時出現錯誤。我得到這個錯誤:

Error 1 error LNK1168: cannot open c:\users\name\documents\visual studio 2013\Projects\ConsoleApplication4\Debug\ConsoleApplication4.exe for writing

但是,如果我等了一下,然後重新嘗試建立,一切都很好。

當我在標準cmd模塊中使用g ++時,我也注意到了這一點;如果我嘗試使用相同的名稱(對於.exe文件)編譯代碼,則會出現Access Denied(訪問被拒絕)錯誤,但是如果稍等一會,我可以執行此操作。

我的直覺告訴我,在我執行它後,計算機仍然運行了一下.exe文件,它不允許我覆蓋它。

+1

是的,進程可能需要一段時間才能完成超出窗口關閉。 – chris

+0

儘管如此,除非你真的很快編程(作爲一個新手似乎不太可能),這個延遲不應該通過這樣一個簡單的程序顯而易見。 –

+1

將「計算機仍然運行的.exe文件」改爲「操作系統仍有一個進程,其內存空間包含可執行映像」,並且您的觀察結果是正確的。 –

回答

1

這是因爲該進程仍在運行,因此該文件正在使用和寫入鎖定。在您終止後,Windows需要一些節奏的節奏來清理所有內容。

+0

什麼是典型的「清潔」時間?對於較大的代碼,它會變得更大嗎? – Petar

+0

@PPG只是猜測在這裏,但我會說這更多的是你的機器如何設置比其他任何事情。 –

+0

「這是因爲」有點強大的語言 - 流程運行只是一個可能的原因。錯誤配置的並行構建也可能導致問題,例如兩個線程同時嘗試鏈接最終的.exe。由於我的SCons腳本中存在一個錯誤,所以出現了確切的問題。 – JBentley