執行**
debug版本輸出結果:
仔細觀察,可以發現release版本的結果中,a與c的值差為4,debug版本的結果中,a和c的結果直差為8.為什麼?
四個位元組被優化掉了。
32位系統——呼叫函式是通過棧來傳遞引數,我們列印的位址實際上是在棧裡面位置的位址
64位系統——函式傳參絕大多數不同通過棧來傳輸的,而是通過暫存器。預設情況下,前六個引數都可以通過暫存器來進行傳輸,這就減少了棧的使用。64位作業系統速度快,不僅僅是因為記憶體定址變大了,可使用的暫存器的數目也變大了。
列印b的時候,我們只是列印了b的值,所以只是通過暫存器,沒有通過內部的棧,因此系統只給a和c的位址預留好棧,所以位址只差會發生改變。
debug版本主要是方便除錯。debug版本的**沒有經過優化,有問題可以比較準確的定位到哪個檔案,哪一行附近。但debug版本沒進過優化,所以一般生成的檔案比較大,執行效率比較慢, 在一些大的系統中甚至要慢乙個數量級以上。
release版本和debug版本
程式一般分為debug 版本和release 版本,debug 版本用於內部除錯,release 版本發行給使用者使用 release和 debug 有什麼不同 release版稱為發行版,debug版稱為除錯版。debug中可以單步執行 跟蹤等功能,但生成的可執行檔案比較大,執行速度較慢。rele...
debug和release版本對比
debug和release,在我看來主要是針對其面向的目標不同的而進行區分的 debug通常稱為除錯版本,通過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何優化,以為開發人員提供強大的應用程式除錯能力。release通常稱為發布版本,是為使用者使用的,一般客戶不允許在發布版本上進行除...
程式的Debug 版本和Release 版本
當建立新的專案工作空間時,visual c 自動建立可產生兩種應用程式版本的配置。一種稱作debug 版本,該版本包括幫助使用者除錯程式的資訊。使用程式的debug 版本,可以在出現問題時單步執行 以檢查程式中的資料值。另一種稱作release 版本,它不包括除錯資訊,但開啟了編譯器的 優化選項,以...