釋放動態建立的二維陣列時出現記憶體訪問異常

2021-06-27 18:31:05 字數 435 閱讀 1653

double** arrm = null; // 儲存i到j組成的多邊形的總的弦長總和

arrm = new double*[n]; 

for(i=0; iarrm[i] = new double[n];

// 和i臨著的1,2個點的三角分割都是0

arrm[i][i] = 0;

arrm[i][i+1] = 0;

arrm[i][i+2] = 0;

}紅色字型標註具有非法的記憶體訪問許可權,

最直接的例子是對最後一行資料,不過程式執行到這不會出現錯誤。

在你釋放記憶體是會出現錯誤,個人猜測錯誤原因應該由於你的非法寫,導致陣列的特殊結束標記被覆蓋,所以釋放記憶體時程式不知道到哪結束而出現異常,比如n=4,你釋放arrm[2]時,會出現錯誤,因為arrm[2][4]存在非法寫,到時陣列的結束標記被擦除,程式不知道到哪是結束的標記。

動態建立和釋放二維陣列

c動態建立和釋放二維陣列 include include define row 5 define col 4 main int i int arr arr int malloc row sizeof int for i 0 i使用calloc申請記憶體時,記憶體會清0,而malloc並不進行這項工作...

動態建立和釋放二維陣列

define crt secure no warnings include include include 動態建立二維陣列,指標做輸出 int get2darr char arr out int row,int col for int i 0 i row i arr p 掛上 return 0 完...

動態建立二維陣列

c 中用new動態建立二維陣列的格式一般是這樣 type p n new type n 其中,type是某種型別,n是二維陣列的列數。採用這種格式,列數必須指出,而行數無需指定。在這裡,p的型別是type n 即是指向乙個有n列元素陣列的指標。還有一種方法,可以不指定陣列的列數 int p p ne...