C C 開發 一維二維陣列的建立與釋放

2021-10-01 23:27:15 字數 1075 閱讀 3070

一般情況,參***使用查詢的時候,資料量太小,都不會去管記憶體分配是否成功,因為分配的記憶體太小。

但是我們逆向的時候,卻要將全部的資訊都要輸出,就不能和參***一樣的處理;

我門要仔細的使用malloc 和free,否者很容易出現記憶體訪問錯誤;

1、一維資料的建立與釋放

建立:

v9_ptr_dtccodesoffsets = (int *)malloc(4 * v26_dtc_numbers);

v1_sysinfo->field_5d4_ptr_dtcoffsets = v9_ptr_dtccodesoffsets;

memset(v9_ptr_dtccodesoffsets, 0, 4 * v26_dtc_numbers);

釋放:v17_ptr = v1_sysinfo->field_5d4_ptr_dtcoffsets;

v8_flag_ret = 1;

if (v17_ptr)

2、二維資料的建立與釋放

v1_sysinfo->field_7c8_dtcmaps 是int** 型別,一維為int*,二維為8位元組長度;

建立:v1_sysinfo->field_7c8_dtcmaps = (int **)malloc(4 * v26_dtc_numbers); // 這裡分配動態分配記憶體,7c8_dtcmaps 裡面 全是指標

if (v1_sysinfo->field_7c8_dtcmaps)

memset(v9, 0, 8u);

}....

}訪問:訪問v18_index 處指向的8個位元組記憶體,使用

v1_sysinfo->field_7c8_dtcmaps[v18_index]

*(v1_sysinfo->field_7c8_dtcmaps[v18_index] + 1)

釋放://釋放二維陣列:v1_sysinfo->field_7c8_dtcmaps 的記憶體

v19_ptr = v1_sysinfo->field_7c8_dtcmaps;

if (v19_ptr)

一維指標陣列和二維指標陣列的建立和記憶體釋放

建立長度為3的一維陣列 double arr new double 3 初始化可以使用方法1也可以使用方法2 初始化方法1 memset arr,0,sizeof arr 初始化方法2 for int i 0 i 3 i arr i 0.0 錄入資料 for int i 0 i 3 i scanf ...

一維二維陣列的建立與遍歷

一 一維陣列的建立與遍歷 方法一 型別 變數 new 型別 l例如 string a new string var int 若使用new關鍵字,則方括號內必須宣告乙個int型別的值來表示長度 也可以 string a new string 方法二 string a 一維陣列的遍歷 for和forea...

C C 二維陣列

已知在c c 中當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。1 二維陣列的概念 在c語言中,二維陣列實際上是一種特殊的一維陣列,它的每個元素也是乙個一維陣列。因此,二維陣列下標形式正確寫法如下 int arrays i j 2 二維陣列作為函式引數 傳遞陣列時必須讓編譯器知道陣列最...