什么 CPU 診斷緩沖區報錯“區域長度錯誤”
如圖 1 所示,CPU 診斷緩沖區報錯報錯“區域長度錯誤”,發生此類錯誤的原因是,訪問地址所尋址的值超出或未完全包含在所允許的操作數范圍(CPU 特定變量或數據塊大小)。
圖 1. “區域長度錯誤”
可以點擊診斷緩沖區下方的“在編輯器中打開”按鈕,跳轉到發生錯誤的程序段,如圖 2 所示。
在程序段 2 中,通過對數組下標賦值的方式間接尋址數組中的元素,在程序段 1 中為數組下標賦值為 2。
在數據塊的聲明中,數組只聲明了 2 個數組元素,下標為 0-1,下標為 2 超出了數據塊中聲明變量的范圍,故報故障“區域長度錯誤”。
可以修改數組下標或者修改數據塊中數組元素的個數,保證數據訪問的范圍在允許的范圍內。
圖 2. 出錯的程序段位置
圖 3. 數組的聲明
此類錯誤在間接尋址訪問變量時易出現,需要編程人員確保訪問地址所尋址的值不超出操作數范圍。
審核編輯:劉清
-
cpu
+關注
關注
68文章
10882瀏覽量
212221
原文標題:為什么 CPU 診斷緩沖區報錯“區域長度錯誤”
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
使用UART FIFO緩沖區時,緩沖區中的數據有時會損壞的原因?
使用malloc建立緩沖區時出現錯誤怎么解決?
基于狀態圖的緩沖區溢出攻擊分析
Windows緩沖區溢出攻擊的實例研究
緩沖區是啥意思 STM32串口數據接收之環形緩沖區
STM32串口數據接收 --環形緩沖區
![STM32串口數據接收 --環形<b class='flag-5'>緩沖區</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
環形緩沖區的實現思路
C++環形緩沖區設計與實現
![C++環形<b class='flag-5'>緩沖區</b>設計與實現](https://file1.elecfans.com/web2/M00/AE/FD/wKgZomVMUCmAf_A4AAB1sbO2qKI881.jpg)
評論