C 語言中的動態記憶體分配是什麼意思?
動態記憶體分配
在執行(執行)中分配記憶體被稱為動態記憶體分配。
calloc() 和 malloc() 函式支援分配動態記憶體。
當函式返回值並賦給指標變數時,會透過使用這些函式完成記憶體空間的動態分配。
在這種情況下,只有當程式單元處於啟用狀態時才會分配變數。
它使用稱為堆的資料結構實現動態分配。
記憶體可以重複利用,並且在不需要記憶體時可以釋放記憶體。
它效率更高。
在此記憶體分配方案中,執行速度比靜態記憶體分配慢。
在此,可以在程式執行過程中的任何時間釋放記憶體。
示例
以下程式使用動態記憶體分配函式在元素集中計算偶數和奇數的總和 −
#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 :
"); 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
",even); printf("The sum of odd numbers is : %d
",odd); }
輸出
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
廣告