Sean's Note: [C/C++] 動態宣告二維陣列

2010年12月20日 星期一

[C/C++] 動態宣告二維陣列

// ==========================

// C Style

// ==========================

int **p;
int i;


// 欲配置成 p[10][3]

p = (int **)malloc(10 * sizeof(int *));
for (i = 0; i < 10; i++){
    p[i] = (int *)malloc(3 * sizeof(int));

....

// 使用完後釋放記憶體空間
for (i = 0; i < 10; i++)
    free(p[i]);

free(p); 





// =========================

// C++ Style

// =========================

int **p; // 二維動態

// 欲配置成 p[10][3]
p = new int* [10];
for (int i = 0; i < 10; i++){
    p[i] = new int [3];

...


// 使用完後釋放記憶體空間
for (int i = 0; i < 10; i++)
    delete [] p[i];

delete [] p; 


int (*p)[3]; // 一維固定一維動態

// 欲配置成 p[10][3]
p = new int[10][3];
for (int i = 0; i < 10; i++){
    p[i] = new int [3];

...


// 使用完後釋放記憶體空間
delete [] p; 

沒有留言:

張貼留言