圖 1 所示,CPU 診斷緩沖區(qū)報(bào)錯報(bào)錯“區(qū)域長度錯誤”,發(fā)生此類錯誤的原因是,訪問地址所尋址的值超出或未完全包含在所允許的操作數(shù)范圍(CPU 特定變量或數(shù)據(jù)塊大小)。
圖 1. “區(qū)域長度錯誤”
可以點(diǎn)擊診斷緩沖區(qū)下方的“在編輯器中打開”按鈕,跳轉(zhuǎn)到發(fā)生錯誤的程序段,如圖 2 所示。
在程序段 2 中,通過對數(shù)組下標(biāo)賦值的方式間接尋址數(shù)組中的元素,在程序段 1 中為數(shù)組下標(biāo)賦值為 2。
在數(shù)據(jù)塊的聲明中,數(shù)組只聲明了 2 個數(shù)組元素,下標(biāo)為 0-1,下標(biāo)為 2 超出了數(shù)據(jù)塊中聲明變量的范圍,故報(bào)故障“區(qū)域長度錯誤”。
可以修改數(shù)組下標(biāo)或者修改數(shù)據(jù)塊中數(shù)組元素的個數(shù),保證數(shù)據(jù)訪問的范圍在允許的范圍內(nèi)。
圖 2. 出錯的程序段位置
圖 3. 數(shù)組的聲明
此類錯誤在間接尋址訪問變量時易出現(xiàn),需要編程人員確保訪問地址所尋址的值不超出操作數(shù)范圍。