2009-04-24

[C語言] 動態記憶體配置(malloc)

malloc , calloc , realloc , free

#include <stdlib.h>

int main(){

/*一維陣列*/
int size1=1000;
int *array1;

// 利用 malloc 配置空間 。
array1 = (int*) malloc(size1 * sizeof(int));

// 利用 calloc 配置空間,會初始為 0 。
array1 = (int*) calloc(size1 , sizeof(int));

// 利用 realloc 將原本的空間調整成兩倍,並且複製原本的內容,
// 但不保證是原本的空間位址。
array1 = (int*) realloc(array1, 2 * size1 * sizeof(int));


// 釋放記憶體空間。
free(array1);


/*二維陣列*/
int i;
int size_x=100;
int size_y=100;
int **array2;

// 利用 malloc 配置二維空間 。
array2 = (int**) malloc(size_x * sizeof(int*));
for (i=0; i<size_x; i++){
array2[i] = (int*) malloc(size_y * sizeof(int));
}


// 釋放記憶體空間
for (i=0; i<size_x; i++){
free(array2[i]);
}
free(array2);

return 0;
}


參考來源:
Standard C Memory [C++ Reference]

0 回應: