2009-04-24 16:11

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

malloc , calloc , realloc , free
  1. #include <stdlib.h> 
  2.  
  3. int main(){ 
  4.  
  5. /*一維陣列*/ 
  6.    int size1=1000; 
  7.    int *array1; 
  8.  
  9.    // 利用 malloc 配置空間 。 
  10.    array1 = (int*) malloc(size1 * sizeof(int)); 
  11.  
  12.    // 利用 calloc 配置空間,會初始為 0 。 
  13.    array1 = (int*) calloc(size1 , sizeof(int)); 
  14.  
  15.    // 利用 realloc 將原本的空間調整成兩倍,並且複製原本的內容, 
  16.    // 但不保證是原本的空間位址。  
  17.    array1 = (int*) realloc(array1, 2 * size1 * sizeof(int)); 
  18.  
  19.  
  20.    // 釋放記憶體空間。 
  21.    free(array1); 
  22.  
  23.  
  24. /*二維陣列*/ 
  25.    int i; 
  26.    int size_x=100; 
  27.    int size_y=100; 
  28.    int **array2; 
  29.  
  30.    // 利用 malloc 配置二維空間 。 
  31.    array2 = (int**) malloc(size_x * sizeof(int*)); 
  32.    for (i=0; i<size_x; i++){ 
  33.        array2[i] = (int*) malloc(size_y * sizeof(int)); 
  34.    } 
  35.  
  36.  
  37.    // 釋放記憶體空間 
  38.    for (i=0; i<size_x; i++){ 
  39.        free(array2[i]); 
  40.    } 
  41.    free(array2); 
  42.  
  43.    return 0;  
  44. } 


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

0 回應: