Bộ nhớ có thể được cấp phát theo hai cách sau -
Phân bổ bộ nhớ tĩnh
Biến static xác định trong một khối không gian được cấp phát, có kích thước cố định. Một khi nó được cấp phát, nó không bao giờ có thể được giải phóng.
Bộ nhớ được cấp cho biến đã khai báo trong chương trình.
-
Địa chỉ có thể được lấy bằng cách sử dụng toán tử ‘&’ và có thể được gán cho một con trỏ.
-
Bộ nhớ được cấp phát trong thời gian biên dịch.
-
Nó sử dụng ngăn xếp để duy trì phân bổ bộ nhớ tĩnh.
-
Trong phân bổ này, khi bộ nhớ được cấp phát, kích thước bộ nhớ không thể thay đổi.
-
Nó kém hiệu quả hơn.
Kích thước cuối cùng của một biến được quyết định trước khi chạy chương trình, nó sẽ được gọi là cấp phát bộ nhớ tĩnh. Nó còn được gọi là phân bổ bộ nhớ thời gian biên dịch.
Chúng tôi không thể thay đổi kích thước của một biến được cấp phát tại thời điểm biên dịch.
Ví dụ 1
Cấp phát bộ nhớ tĩnh thường được sử dụng cho một mảng. Hãy lấy một chương trình ví dụ về mảng -
#include<stdio.h> main (){ int a[5] = {10,20,30,40,50}; int i; printf (“Elements of the array are”); for ( i=0; i<5; i++) printf (“%d, a[i]); }
Đầu ra
Elements of the array are 1020304050
Ví dụ 2
Hãy xem xét một ví dụ khác để tính tổng và tích của tất cả các phần tử trong một mảng -
#include<stdio.h> void main(){ //Declaring the array - run time// int array[5]={10,20,30,40,50}; int i,sum=0,product=1; //Reading elements into the array// //For loop// for(i=0;i<5;i++){ //Calculating sum and product, printing output// sum=sum+array[i]; product=product*array[i]; } //Displaying sum and product// printf("Sum of elements in the array is : %d\n",sum); printf("Product of elements in the array is : %d\n",product); }
Đầu ra
Sum of elements in the array is : 150 Product of elements in the array is : 12000000