ฟังก์ชัน malloc() ในไลบรารี C พร้อมตัวอย่าง

malloc ใน C คืออะไร?

ฟังก์ชัน malloc() ย่อมาจากการจัดสรรหน่วยความจำ เป็นฟังก์ชันที่ใช้ในการจัดสรรบล็อกหน่วยความจำแบบไดนามิก จะสงวนพื้นที่หน่วยความจำตามขนาดที่ระบุและส่งกลับตัวชี้ null ที่ชี้ไปยังตำแหน่งหน่วยความจำ ตัวชี้ที่ส่งคืนมักจะเป็นประเภทโมฆะ หมายความว่าเราสามารถกำหนดฟังก์ชัน malloc ให้กับพอยน์เตอร์ใดก็ได้

วากยสัมพันธ์

ptr = (cast_type *) malloc (byte_size);

ที่นี่

  • ptr เป็นตัวชี้ของ cast_type
  • ฟังก์ชัน malloc ส่งคืนตัวชี้ไปยังหน่วยความจำที่จัดสรรเป็น byte_size
Example: ptr = (int *) malloc (50)

เมื่อดำเนินการคำสั่งนี้สำเร็จ พื้นที่หน่วยความจำ 50 ไบต์จะถูกสงวนไว้ ที่อยู่ของไบต์แรกของพื้นที่สงวนถูกกำหนดให้กับตัวชี้ ptr ประเภท int

พิจารณาอีกตัวอย่างหนึ่งของการนำ malloc ไปใช้งาน:

#include <stdlib.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */
    if (ptr != NULL) {
      *(ptr + 5) = 480; /* assign 480 to sixth integer */
      printf("Value of the 6th integer is %d",*(ptr + 5));
    }
}

Output:

Value of the 6th integer is 480

malloc ใน C คืออะไร

  1. สังเกตว่า ขนาดของ(*ptr) ถูกใช้แทน ขนาดของ(int) เพื่อให้โค้ดมีความแข็งแกร่งมากขึ้นเมื่อคำประกาศ *ptr ถูกแปลงชนิดข้อมูลเป็นชนิดข้อมูลอื่นในภายหลัง
  2. การจัดสรรอาจล้มเหลวหากหน่วยความจำไม่เพียงพอ ในกรณีนี้จะส่งกลับตัวชี้ NULL ดังนั้นคุณควรรวมโค้ดเพื่อตรวจสอบตัวชี้ NULL
  3. โปรดจำไว้ว่าหน่วยความจำที่จัดสรรนั้นต่อเนื่องกันและสามารถถือเป็นอาร์เรย์ได้ เราสามารถใช้เลขคณิตตัวชี้เพื่อเข้าถึงองค์ประกอบของอาร์เรย์แทนที่จะใช้เครื่องหมายวงเล็บ [ ] เราแนะนำให้ใช้ + เพื่ออ้างถึงองค์ประกอบของอาร์เรย์ เนื่องจากการใช้การเพิ่มค่า ++ หรือ += จะเปลี่ยนที่อยู่ที่เก็บโดย ตัวชี้.

ฟังก์ชัน Malloc ยังสามารถใช้ได้กับชนิดข้อมูลอักขระและชนิดข้อมูลที่ซับซ้อน เช่น โครงสร้างอีกด้วย

สรุปโพสต์นี้ด้วย: