Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cấp phát bộ nhớ động (Dynamic Memory Allocation) trong C


Cấp phát bộ nhớ động

  • Cấp phát bộ nhớ tại thời điểm thực thi (run time) gọi là cấp phát động.
  • Hàm calloc() và malloc() hỗ trợ cấp phát động.
  • Không gian bộ nhớ được cấp phát động khi giá trị trả về từ hàm gán cho biến con trỏ.
  • Biến chỉ được cấp phát khi đơn vị chương trình 활성 hóa.
  • Sử dụng cấu trúc dữ liệu heap để triển khai cấp phát động.
  • Có tái sử dụng bộ nhớ, có thể giải phóng khi không cần.
  • Hiệu quả hơn.
  • Thực thi chậm hơn cấp phát tĩnh.
  • Bộ nhớ có thể giải phóng bất kỳ lúc nào trong chương trình.

Ví dụ

Chương trình tính tổng số chẵn và lẻ trong tập phần tử dùng cấp phát động:

#include<stdio.h> #include<stdlib.h> void main(){     //Khai báo biến, con trỏ//     int i,n;     int *p;     int even=0,odd=0;     //Khai báo địa chỉ cơ sở p dùng malloc//     p=(int *)malloc(n*sizeof(int));     //Nhập số phần tử//     printf("Enter the number of elements : ");     scanf("%d",&n);     /*In kết quả - dùng if để kiểm tra cấp phát thành công*/     if (p==NULL){         printf("Memory not available");         exit(0);     }     //Lưu phần tử vào vị trí//     printf("The elements are : \n");     for(i=0;i<n;i++){         scanf("%d",p+i);     }     for(i=0;i<n;i++){         if(*(p+i)%2==0){             even=even+*(p+i);         }         else{             odd=odd+*(p+i);         }     }     printf("The sum of even numbers is : %d\n",even);     printf("The sum of odd numbers is : %d\n",odd); }

Kết quả

Enter the number of elements : 4 The elements are : 35 24 46 12 The sum of even numbers is : 82 The sum of odd numbers is : 35