วันนี้ผมมาถึงหน้า167ของภาษา C Programming (ฉบับที่สองไบรอัน W. Kernighan และเดนนิสเอ็ม Ritchie)malloc
และพบว่าผู้เขียนบอกว่าผมต้องทิ้ง นี่คือส่วนหนึ่งจากหนังสือ:
7.8.5 การจัดการพื้นที่เก็บข้อมูล
ฟังก์ชัน malloc และ calloc รับบล็อกของหน่วยความจำแบบไดนามิก
void *malloc(size_t n)
ส่งคืนตัวชี้ไปยัง n ไบต์ของที่เก็บข้อมูลที่ไม่กำหนดค่าเริ่มต้นหรือ NULL ถ้าไม่สามารถดำเนินการตามคำขอได้
void *calloc(size_t n, size_t size)
ส่งกลับตัวชี้ไปยังพื้นที่ว่างเพียงพอสำหรับอาร์เรย์ของวัตถุ n ขนาดที่ระบุหรือ NULL ถ้าคำขอไม่สามารถตอบสนอง ที่เก็บข้อมูลถูกเตรียมใช้งานเป็นศูนย์ ตัวชี้ที่ส่งคืนโดย malloc หรือ calloc มีการจัดตำแหน่งที่เหมาะสมสำหรับวัตถุที่เป็นปัญหา แต่ต้องถูกส่งลงในประเภทที่เหมาะสมเช่นเดียวกับใน
int *ip; ip = (int *) calloc(n, sizeof(int));
ผมรู้อยู่แล้วว่าmalloc
(และครอบครัว) ผลตอบแทนที่พิมพ์เป็นโมฆะ *และมีคำอธิบายที่ดีทำไมไม่หล่อmalloc
แต่คำถามของฉันคือ: ทำไมหนังสือบอกว่าฉันควรโยนมัน?
malloc
เพราะไม่ใช่ C ++ - ยกเว้นเมื่อคุณต้อง - แต่คุณไม่ควร - ยกเว้น ... AGGGHHHHHHH !!!!! :-)