最近我編的程式出了乙個問題:
在我的win7系統上,編譯鏈結執行都不報錯,短時間的執行程式也沒有問題,時間短的話可以執行成功,得到結果。
但是如果設定的引數大一些,讓程式執行2天以上的時候,在執行到一半的時候就會報錯,程式中止。如果點除錯,會出來乙個對話方塊,有路徑選擇:please enter the path for dbgheap.c 。這個c檔案我在自己的安裝程式裡是找不到的。但是我看網上大家的說法,應該是記憶體越界或者是指向了釋放的記憶體,我之前已經盡量把有malloc的地方都檢查過了,能不用動態分配的就不用了,結果還是出了這個問題。
接著上面的說,點取消之後,彈出了一句話,user breakpoint called from code at ox409c30,點關閉之後就是組合語言的除錯了,我用shift+f11跳出函式一點一點的看,最後看到游標指向一句動態分配語句,現在我已經把這句動態分配改掉了,又重新開始執行程式了,希望這次能解決這個問題。
另外,在另外一台xp系統上執行這個程式的時候,報錯的方式是不一樣的,那台電腦上顯示的資訊是:應用程式發生異常,unknown software exception (0x80000003) 位置為0x0040a0f0.
這個程式很重要,下半年的成果就靠它了,一定得把這個問題解決啊。。。
昨天經過查詢,終於把這個問題解決了,原因是野指標~!!
現在程式跑了4,5天了都沒問題了。
關於C 記憶體越界訪問的問題
今天是第一天寫部落格,哈哈,想想還有點激動,啦啦。言歸正傳啊,今天主要是說c基礎裡的strcat函式,它的意思主要是進行字元的拼接,例如 來自 函式名 strcat 功 能 字串拼接函式 用 法 char strcat char destin,char source 程式例 i nclude i n...
關於陣列的越界問題
華清遠見嵌入式學院講師。關於陣列的越界問題由來已久,大部分人比較困惑的地方是在申請記憶體空間時。下面先來看乙個例子 在這個例子中呢,陣列buf申請了10個空間,資料通過標準輸入存到buf中,然後列印出buf中的內容。編譯 執行。第一次輸入,我輸入9個數 可以正確輸出,沒有問題。但是,當我輸入10個數...
關於程式記憶體的問題
首先要確定一點就是,乙個程式在啟動以後,系統才會為這個程式分配記憶體,記憶體無非就這幾種 虛擬記憶體,記憶體,快取記憶體,暫存器,姑且叫這些記憶體是物理記憶體吧,因為它們都是以物質形式存在,不是玩概念的.注意,此處說的物理記憶體與大眾說的物理記憶體是不一樣的.然後再來看程式中使用的記憶體,這是玩概念...