หน่วยความจำสามารถจัดสรรได้สองวิธีดังต่อไปนี้ -
การจัดสรรหน่วยความจำแบบคงที่
ตัวแปรคงที่กำหนดในหนึ่งบล็อกของพื้นที่จัดสรร ที่มีขนาดคงที่ เมื่อได้รับการจัดสรรแล้วจะไม่มีวันปล่อยให้เป็นอิสระ
มีการจัดสรรหน่วยความจำสำหรับตัวแปรที่ประกาศไว้ในโปรแกรม
-
สามารถรับที่อยู่ได้โดยใช้ตัวดำเนินการ '&' และสามารถกำหนดให้กับตัวชี้ได้
-
หน่วยความจำจะถูกจัดสรรระหว่างเวลาคอมไพล์
-
มันใช้สแต็กเพื่อรักษาการจัดสรรหน่วยความจำแบบคงที่
-
ในการจัดสรรนี้ เมื่อจัดสรรหน่วยความจำแล้ว ขนาดหน่วยความจำจะไม่สามารถเปลี่ยนแปลงได้
-
มีประสิทธิภาพน้อยกว่า
ขนาดสุดท้ายของตัวแปรจะถูกกำหนดก่อนที่จะรันโปรแกรม ซึ่งจะถูกเรียกว่าเป็นการจัดสรรหน่วยความจำแบบคงที่ เรียกอีกอย่างว่าการจัดสรรหน่วยความจำเวลาคอมไพล์
เราไม่สามารถเปลี่ยนขนาดของตัวแปรที่ถูกจัดสรรในเวลาคอมไพล์ได้
ตัวอย่างที่ 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