2010-04-20 43 views
0

我最近寫了一個Canonical Huffman壓縮算法的實現。我有一個500kb的測試文件,在Visual Studio 2008中運行調試和發佈版本時可以壓縮到大約250kb。但是,當我直接從可執行文件運行發行版時,測試文件僅壓縮到大約330kb。爲什麼C++ fwrite()在release中產生更大的輸出?

我認爲使用fwrite()編寫文件時出現了問題。我測試了該程序,並確認解壓縮文件始終生成正確的未壓縮文件。

有誰知道爲什麼這可能是?基於從何處啓動的文件,同一個可執行文件如何產生不同大小的輸出?

+0

你可能不得不將這個問題分解成一個小問題。你怎麼能確定fwrite正在做一些不同的事情?因爲你正在進行壓縮,所以兩個文件解壓縮的平等嗎? – mmr 2010-04-20 00:13:56

+1

你看過文件的內容,看看有什麼不同嗎? – 2010-04-20 00:14:48

+1

這兩個版本的文件是否有效? – 2010-04-20 00:42:38

回答

0

嘗試通過App Verifier運行它,看看它發現了什麼。

+0

非常感謝,我很快運行AppVerifier,並在某處出現訪問衝突。所以這給了我一個起點。 – waffleShirt 2010-04-20 01:37:32

+0

原來有一個數組超出界限讀取發生,驚訝是沒有被調試器捕獲。 – waffleShirt 2010-04-20 02:18:28

2

檢出/RTCu編譯器選項以幫助檢測未初始化變量的使用情況。

+0

謝謝,我試過使用該編譯器標誌,但我沒有收到有關未初始化變量的任何新信息。 – waffleShirt 2010-04-20 01:21:25

相關問題