- 相關(guān)推薦
為何出現“非法操作
為何出現“非法操作”
徐淼華
中國科學(xué)技術(shù)大學(xué)少年班9700(230026)
在使用電腦的過(guò)程中,尤其是編程的時(shí)候,經(jīng)常會(huì )遇到Windows彈出如圖所示的對話(huà)框,提示軟件進(jìn)行了非法操作:
圖:點(diǎn)擊了“詳細資料”后的對話(huà)框
此時(shí)如果點(diǎn)擊“詳細資料”,對話(huà)框擴大窗口,給出了寄存器的值,但是一般人看不明白;而如果點(diǎn)擊“調試”,它將調用Visual C 或Delphi之類(lèi)的安裝在系統中的編譯器,并在編譯器中顯示程序的匯編碼,更是讓人頭大一圈;若點(diǎn)擊“關(guān)閉”,則會(huì )將內存中的相關(guān)數據都丟棄(很多時(shí)候這些數據是有用的),非?上。
引起Windows彈出此對話(huà)框的原因是內存出錯。內存質(zhì)量不好,不穩定,某些數據無(wú)端的改變,當然被認為是“非法操作”。這里討論的是軟件特別是自己編寫(xiě)的小程序是如何引起錯誤的。Windows 9X中,不必關(guān)心內存模式、地址轉換、64K的代碼段和數據段,因為地址和內存都放在線(xiàn)形的32位內存空間中。每個(gè)應用程序都可“看見(jiàn)”4GB的線(xiàn)形地址空間,其中最開(kāi)始的4MB由操作系統保留,剩下的不足2GB的空間屬于應用程序私有空間。要強調的是,在4MB 到2GB之間的非保留空間是完全私有的。每個(gè)進(jìn)程都可有自己私有的地址空間,而且與其他進(jìn)程的地址空間是完全無(wú)關(guān)的。利用處理器的頁(yè)映射能力,操作系統可為每個(gè)進(jìn)程提供獨立的從邏輯地址到物理內存(RAM或分頁(yè)文件)的映射,使一個(gè)進(jìn)程的地址空間對另一個(gè)進(jìn)程完全不可見(jiàn)。編程時(shí),若一個(gè)進(jìn)程(程序)訪(fǎng)問(wèn)了它的地址空間外的地址,Windows 9X就會(huì )彈出上述對話(huà)框。具體有以下幾個(gè)原因:
1.數組下標越界
觀(guān)察以下程序:
#include
【為何出現“非法操作】相關(guān)文章:
聯(lián)想的薪酬為何依然神秘?03-20
“哲學(xué)”為何在古希臘誕生01-16
職教培訓:為何“春風(fēng)難綠”?11-30
論文答辯易出現的不足12-11
談?wù)勅粘=浑H中出現的誤區03-18
獨立董事退出現象研究03-24
探討如何應對強化造影出現的問(wèn)題03-18
聲音過(guò)亮出現的原因是什么?03-28