หน่วยความจำสามารถจัดสรรได้สองวิธีดังต่อไปนี้ -

การจัดสรรหน่วยความจำแบบคงที่
ตัวแปรคงที่กำหนดในหนึ่งบล็อกของพื้นที่จัดสรร ที่มีขนาดคงที่ เมื่อได้รับการจัดสรรแล้วจะไม่มีวันปล่อยให้เป็นอิสระ
มีการจัดสรรหน่วยความจำสำหรับตัวแปรที่ประกาศไว้ในโปรแกรม
-
สามารถรับที่อยู่ได้โดยใช้ตัวดำเนินการ '&' และสามารถกำหนดให้กับตัวชี้ได้
-
หน่วยความจำจะถูกจัดสรรระหว่างเวลาคอมไพล์
-
มันใช้สแต็กเพื่อรักษาการจัดสรรหน่วยความจำแบบคงที่
-
ในการจัดสรรนี้ เมื่อจัดสรรหน่วยความจำแล้ว ขนาดหน่วยความจำจะไม่สามารถเปลี่ยนแปลงได้
-
มีประสิทธิภาพน้อยกว่า
ขนาดสุดท้ายของตัวแปรจะถูกกำหนดก่อนที่จะรันโปรแกรม ซึ่งจะถูกเรียกว่าเป็นการจัดสรรหน่วยความจำแบบคงที่ เรียกอีกอย่างว่าการจัดสรรหน่วยความจำเวลาคอมไพล์
เราไม่สามารถเปลี่ยนขนาดของตัวแปรที่ถูกจัดสรรในเวลาคอมไพล์ได้
ตัวอย่างที่ 1
โดยทั่วไปแล้วการจัดสรรหน่วยความจำแบบคงที่จะใช้สำหรับอาร์เรย์ ลองมาดูตัวอย่างโปรแกรมในอาร์เรย์กัน −
#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]);
} ผลลัพธ์
Elements of the array are 1020304050
ตัวอย่างที่ 2
ลองพิจารณาตัวอย่างอื่นในการคำนวณผลรวมและผลิตภัณฑ์ขององค์ประกอบทั้งหมดในอาร์เรย์ −
#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);
} ผลลัพธ์
Sum of elements in the array is : 150 Product of elements in the array is : 12000000