共用方式為


建立發行組建時的常見問題

在開發期間,您通常會使用專案的偵錯組建來建置和測試。 如果您接著為發行組建建置應用程式,您可能會收到存取違規。

下列清單顯示偵錯與發行 (nondebug) 組建之間的主要差異。 還有其他差異,但以下是在偵錯組建中運作時,會導致應用程式在發行組建中失敗的主要差異。

如需如何在偵錯組建中攔截發行組建錯誤的資訊,請參閱 /GZ (在偵錯組建中攔截發行組建錯誤) 編譯器選項。

堆積配置

堆積配置是當應用程式在偵錯中運作但無法釋出時,大約 90% 明顯問題的原因。

當您建置專案以進行偵錯時,您會使用偵錯記憶體配置器。 這表示所有記憶體配置都有放在它們周圍的防護位元組。 這些防護位元組會偵測記憶體覆寫。 因為發行和偵錯版本之間的堆積配置不同,因此記憶體覆寫可能不會在偵錯組建中建立任何問題,但在發行組建中可能會產生重大影響。

如需詳細資訊,請參閱 檢查記憶體覆寫 和使用 偵錯組建檢查記憶體覆寫

編譯

當您建置發行時,許多 MFC 宏和大部分的 MFC 實作都會變更。 特別是 ASSERT 宏會在發行組建中評估為無任何專案,因此不會執行 ASSERT 中找到的程式碼。 如需詳細資訊,請參閱 檢查 ASSERT 語句

某些函式會內嵌在發行組建中以提升速度。 優化通常會在發行組建中開啟。 也會使用不同的記憶體配置器。

指標支援

缺少偵錯資訊會從您的應用程式中移除填補。 在發行組建中,流浪指標有機會指向未初始化的記憶體,而不是指向偵錯資訊。

最佳化

根據特定程式碼區段的性質,優化編譯器可能會產生非預期的程式碼。 這是發行組建問題最不可能的原因,但有時確實發生。 如需解決方案,請參閱 優化您的程式碼

另請參閱

發行組建
解決發行組建的問題