Computer >> Máy Tính >  >> Lập trình >> lập trình C

Ý bạn là gì về Phân bổ bộ nhớ động trong lập trình C?

Phân bổ bộ nhớ động

  • Phân bổ bộ nhớ tại thời điểm thực thi (thời gian chạy) được gọi là cấp phát bộ nhớ động.

  • Các hàm calloc () và malloc () hỗ trợ cấp phát bộ nhớ động.

  • Việc cấp phát động của không gian bộ nhớ được thực hiện bằng cách sử dụng các hàm này khi giá trị được trả về bởi các hàm và được gán cho các biến con trỏ.

  • Trong trường hợp này, các biến chỉ được cấp phát nếu đơn vị chương trình của bạn hoạt động.

  • Nó sử dụng cấu trúc dữ liệu được gọi là heap để triển khai phân bổ động.

  • Có khả năng tái sử dụng bộ nhớ và bộ nhớ có thể được giải phóng khi không cần thiết.

  • Nó hiệu quả hơn.

  • Trong lược đồ cấp phát bộ nhớ này, việc thực thi chậm hơn so với cấp phát bộ nhớ tĩnh.

  • Tại đây bộ nhớ có thể được giải phóng bất kỳ lúc nào trong chương trình.

Ví dụ

Chương trình sau tính toán tổng các số chẵn và số lẻ trong một tập hợp các phần tử bằng cách sử dụng các hàm cấp phát bộ nhớ động -

#include<stdio.h>
#include<stdlib.h>
void main(){
   //Declaring variables, pointers//
   int i,n;
   int *p;
   int even=0,odd=0;
   //Declaring base address p using malloc//
   p=(int *)malloc(n*sizeof(int));
   //Reading number of elements//
   printf("Enter the number of elements : ");
   scanf("%d",&n);
   /*Printing O/p -
   We have to use if statement because we have to check if memory
   has been successfully allocated/reserved or not*/
   if (p==NULL){
      printf("Memory not available");
      exit(0);
   }
   //Storing elements into location using for loop//
   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);
}

Đầu ra

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