修正: 未預期的行為,當您執行時產生的 Visual Studio 2008 Service Pack 1 應用程式,呼叫 setjmp 函式或 longjmp 函式在原始程式檔


徵狀


請試想下列案例:
  • 您可以啟用全域最佳化選項 (/Og) 藉由啟用下列選項之一:
    • /O1 
    • /O2 
    • /Ox 
  • 您可以使用 Microsoft Visual Studio 2008 Service Pack 1 (SP1),以建置 Microsoft Visual C++ 的原始程式檔。
  • 原始程式檔會呼叫setjmp函式、 longjmp函式或兩個函式。
在這個案例中,編譯器可能會使用相同的堆疊位移,來儲存不同的本機變數。 因此,當您執行產生的應用程式時,可能會發生未預期的行為。

原因


之所以發生這個問題,是因為最佳化器並未處理setjmp函式,或是使用longjmp函數。 這會導致最佳化器無法正確計算區域變數的存留期。 當變更一個變數時,可能會意外地變更另一個變數。

解決方案


Hotfix 資訊

支援的 hotfix 可從 Microsoft 取得。 不過,此 hotfix 被用來修正本文所述的問題。 此 hotfix 只適用於發生本文所述之問題的系統。 此 hotfix 可能會接受其他測試。 因此,如果此問題的影響不會很嚴重,我們建議您等候含此 hotfix 的下一版軟體更新。若要立即解決這個問題,請連絡 Microsoft 客戶支援服務 」 取得 hotfix。 如需 Microsoft 客戶服務和支援的電話號碼或建立個別的服務要求的完整清單,請造訪下列 Microsoft 網站: 答 5: 針對 Windows Server 2016 和 Windows 10 1709 版的 Windows Server 容器映像而發行的更新,包含適用於這組弱點的緩和措施,並且不需要額外設定。 4013469注意:在某些特殊情況下,如果 Microsoft 技術支援人員認為特定更新可以解決您的問題,可能就不會收取一般因支援電話所產生的費用。 收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。若要下載此 hotfix,從 Microsoft 開發人員網路 (MSDN) 的程式碼庫,請造訪下列 Microsoft 網站:答 5: 針對 Windows Server 2016 和 Windows 10 1709 版的 Windows Server 容器映像而發行的更新,包含適用於這組弱點的緩和措施,並且不需要額外設定。 MSDN 程式碼庫顯示 hotfix 是可用的語言。 如果看不到您所使用的語言,它是因為代碼庫資源頁面未提供該語言的支援。或者,您可以從下列 Microsoft 連線網站來下載這個 hotfix:

先決條件

若要套用此 hotfix,您必須使用 Microsoft Visual Studio 2008 Service Pack 1 安裝。

重新啟動資訊

您不必重新啟動電腦,如果您已經停止的 Visual Studio 的所有執行個體,請在您安裝此 hotfix 之後。

Hotfix 取代資訊

此 hotfix 不會取代先前發行的 hotfix。

檔案資訊

此 hotfix 的全域版本安裝檔案具有下列表格中所列的屬性。 這些檔案的日期與時間是以國際標準時間 (UTC) 表示。 本機電腦上這些檔案的日期與時間,是以您當地時間和目前的日光節約時間 (DST) 的時差來顯示。 此外,當您對檔案執行特定作業時,其日期與時間可能會改變。
檔案名稱檔案版本檔案大小日期時間平台
C2.dll15.0.30729.61472,283,84025-日-201101:25x86
C2.dll15.0.30729.61472,362,68825-日-201101:25x86
C2.dll15.0.30729.61472,493,24825-日-201101:25x86
C2.dll15.0.30729.61473,018,04825-日-201101:25x64
C2.dll15.0.30729.61477,263,04025-Feb-201101:25IA-64
Link.exe9.0.30729.61471,055,56025-日-201101:25x64
Link.exe9.0.30729.61472,135,36825-Feb-201101:25IA-64
Link.exe9.0.30729.6147800,58425-Feb-201101:25x86

因應措施


若要解決這個問題,初始化區域變數的函式中的早期,使編譯器可以是變數的存留期的注意。

狀態


Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。

其他相關資訊


如需有關軟體更新術語的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明