引用:
原帖由 kathy_sakura 於 2007-3-26 10:48 發表
這幾天我只要關閉視窗後,就會出現這個........每次都出現
我不懂這是什麼,有沒有人可以告訴我,它怎麼了?
還是有按到什麼東西?
Access violation 與 runtime error 216 at xxxxxxxx引用:
原來程式運作無誤, 但使用者更改設定後
就會出現 Access violation 之類的錯誤訊息
將程式關閉的話, 就會出現一連中的 access violation 的訊息方塊
中間夾雜一兩個 runtime error 216 at xxxxxxxx 的訊息方塊
經 debug 後, 出現錯誤訊息的程式碼如下:
begin
for i := 0 to xx do begin
// ...
for j := 0 to xx do begin
tmpStr := ''; // 這行出現錯誤訊息
// ...
tmpStr := ''; // 後來加上這一行就 ok
end;
end;
end;
在 debug 時, 中斷點設在紅色那行
滑鼠停在紅色那行時, debug 資訊為 tmpStr = Inaccessible value
後來在 for j 迴圈最後再加上 tmpStr := ''; 這一行之後
就不再出現錯誤訊息了.
請教大家, 什麼情況會造成這樣的錯誤?
是中毒嗎?(運行程式的 PC 上有裝防毒軟體)
我以前也試過類似的...在莫明奇妙的地方出錯,加減些莫明奇妙的 CODE 就會改變出錯的變數甚至變成沒事。
基本上應該就是Memory錯誤
Memory錯誤時, Debug所追到之位置很難說, 有時也許你加幾個Showmessage或幾個assign ,好像bug就不見了. 不過錯誤仍在不知什麼時候要發生
仔細查查所有的Create, allocate及free吧
否則用debug觀查所有Register及memory狀態看pointer指到那去了恐怕也很難
想想如果有一個pointer, 未allocate或已free而未assing成nil, 他可指向任何位置, 是否會造成衝突是不一定的