การจัดสรรหน่วยความจำแบบไดนามิก
สำรวจฟังก์ชันอย่าง malloc, calloc, realloc และ free สำหรับจัดการหน่วยความจำแบบไดนามิก
การจัดสรรหน่วยความจำแบบไดนามิก เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 3 บทเรียน
การจัดสรรหน่วยความจำแบบไดนามิก
การจัดสรรหน่วยความจำแบบไดนามิก
ใน C การจัดสรรหน่วยความจำแบบไดนามิกช่วยให้เราจัดสรรหน่วยความจำขณะรันโปรแกรมแทนการจัดสรรในเวลาแปลโปรแกรม
ในบทเรียนนี้ คุณจะได้เรียนรู้สิ่งต่อไปนี้:
- วิธีจัดสรรหน่วยความจำโดยใช้
malloc,callocและrealloc - วิธีคืนหน่วยความจำที่จัดสรรแล้วโดยใช้
free - วิธีหลีกเลี่ยงหน่วยความจำรั่ว

การจัดสรรหน่วยความจำแบบไดนามิกคืออะไร
การจัดสรรหน่วยความจำแบบไดนามิกคืออะไร
โดยปกติ หน่วยความจำสำหรับตัวแปรจะถูกจัดสรรในเวลาแปลโปรแกรม
การจัดสรรหน่วยความจำแบบไดนามิกจะจัดสรรหน่วยความจำระหว่างการทำงานของโปรแกรมโดยใช้ฟังก์ชันพิเศษ
วิธีนี้มีประโยชน์สำหรับการจัดการอาร์เรย์หรือโครงสร้างที่ไม่ทราบขนาดในเวลาแปลโปรแกรม
การจัดสรรหน่วยความจำด้วย malloc()
การจัดสรรหน่วยความจำด้วย malloc()
ฟังก์ชัน malloc จัดสรรหน่วยความจำแต่จะไม่กำหนดค่าเริ่มต้นให้
รูปแบบคำสั่ง:
ptr = (int*) malloc(size * sizeof(int));
ฟังก์ชันนี้ส่งคืนตัวชี้ไปยังหน่วยความจำที่จัดสรร หรือส่งคืนค่า NULL หากการจัดสรรล้มเหลว
ตัวอย่าง: การใช้ malloc()
ตัวอย่าง: การใช้ malloc()
โปรแกรมนี้สาธิตวิธีจัดสรรหน่วยความจำโดยใช้ malloc
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i * 10;
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}การจัดสรรหน่วยความจำด้วย calloc()
การจัดสรรหน่วยความจำด้วย calloc()
ฟังก์ชัน calloc จัดสรรหน่วยความจำและกำหนดค่าเริ่มต้นทั้งหมดเป็นศูนย์
รูปแบบคำสั่ง:
ptr = (int*) calloc(num_elements, sizeof(int));
ฟังก์ชันนี้ส่งคืนตัวชี้ไปยังหน่วยความจำที่จัดสรร หรือส่งคืนค่า NULL หากการจัดสรรล้มเหลว
ตัวอย่าง: การใช้ calloc()
ตัวอย่าง: การใช้ calloc()
โปรแกรมนี้สาธิตวิธีจัดสรรหน่วยความจำโดยใช้ calloc
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int*) calloc(5, sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed!\n");
return 1;
}
for (int i = 0; i < 5; i++) {
printf("%d ", ptr[i]); // All elements initialized to 0
}
free(ptr);
return 0;
}การจัดสรรหน่วยความจำใหม่ด้วย realloc()
การจัดสรรหน่วยความจำใหม่ด้วย realloc()
ฟังก์ชัน realloc เปลี่ยนขนาดของหน่วยความจำที่จัดสรรไว้ก่อนหน้านี้
รูปแบบคำสั่ง:
ptr = realloc(ptr, new_size * sizeof(int));
ฟังก์ชันนี้ส่งคืนตัวชี้ไปยังบล็อกหน่วยความจำใหม่
การคืนหน่วยความจำด้วย free()
การคืนหน่วยความจำด้วย free()
ควรคืนหน่วยความจำที่จัดสรรแล้วโดยใช้ free() เพื่อหลีกเลี่ยงหน่วยความจำรั่ว
รูปแบบคำสั่ง:
free(ptr);
หลังจากคืนหน่วยความจำแล้ว จะต้องไม่เข้าถึงตัวชี้ดังกล่าว
สรุป
สรุป
ในบทเรียนนี้ คุณได้เรียนรู้สิ่งต่อไปนี้:
- วิธีจัดสรรหน่วยความจำโดยใช้
mallocและcalloc - วิธีจัดสรรหน่วยความจำใหม่โดยใช้
realloc - วิธีคืนหน่วยความจำโดยใช้
freeเพื่อป้องกันหน่วยความจำรั่ว
ถัดไป เราจะสำรวจอาร์เรย์ของตัวชี้และตัวชี้ฟังก์ชันใน C

คำถามที่พบบ่อย
บทเรียน “การจัดสรรหน่วยความจำแบบไดนามิก” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดสรรหน่วยความจำแบบไดนามิก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดสรรหน่วยความจำแบบไดนามิก”
สำรวจฟังก์ชันอย่าง malloc, calloc, realloc และ free สำหรับจัดการหน่วยความจำแบบไดนามิก คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “การจัดสรรหน่วยความจำแบบไดนามิก” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนะนำพอยน์เตอร์
- การจัดสรรหน่วยความจำแบบไดนามิก
- อาร์เรย์พอยน์เตอร์และพอยน์เตอร์ฟังก์ชัน