ความแตกต่างระหว่าง Malloc และ New ความแตกต่างระหว่าง

Anonim

Malloc vs New

One ของคำถามสัมภาษณ์ที่พบมากที่สุดในการว่าจ้างโปรแกรมเมอร์คอมพิวเตอร์สำหรับผู้สมัคร / โปรแกรมเมอร์คอมพิวเตอร์เพื่ออธิบายความแตกต่างระหว่าง malloc กับใหม่ ทั้ง malloc และใหม่มีอยู่ในขอบเขตของภาษาคอมพิวเตอร์และมักถูกใช้โดยโปรแกรมเมอร์คอมพิวเตอร์เพื่อจัดสรรหน่วยความจำแบบไดนามิก

ความแตกต่างพื้นฐานระหว่างสองคือ malloc มีอยู่ในภาษา C ในขณะที่ new เป็นคุณสมบัติเฉพาะของภาษา C + Malloc เป็นฟังก์ชัน (ซึ่งสำหรับโปรแกรมเมอร์ต้องใช้เวลาในการดำเนินการบางอย่าง) ขณะที่โปรแกรมใหม่คือโปรแกรมผู้ดำเนินการ (ซึ่งจะลดเวลาในการดำเนินการ) นี่เป็นประโยชน์จากโอเปอเรเตอร์ใหม่เนื่องจากโปรแกรมเมอร์ที่ทำโปรแกรมแบบเรียลไทม์มีความจำเป็นต้องเลือกวิธีที่เร็วที่สุดที่จะใช้

Operator ใหม่มีความปลอดภัยในการทำงานซึ่งแตกต่างจาก malloc ฟังก์ชัน

ฟังก์ชัน malloc เป็นฟังก์ชันของไลบรารีสำหรับภาษาซี ทั้งหมดมันไม่เป็นหน่วยความจำจัดสรรและส่งกลับตัวชี้ไป ในทางกลับกันโอเปอเรเตอร์ใหม่คือตัวสร้างระดับภาษาและงานของมันคือการสร้างอินสแตนซ์วัตถุโดยจัดสรรหน่วยความจำและเรียก constructors ที่เหมาะสม อีกความแตกต่างของฟังก์ชัน malloc จากโอเปอเรเตอร์ใหม่คือ malloc ต้อง typecasting ระหว่างการประกาศในขณะที่อดีตไม่ได้ นอกจากนี้ฟังก์ชัน malloc ใช้คำว่า "ฟรี" เพื่อล้างหน่วยความจำในขณะที่ "ลบ" ใช้ในโอเปอเรเตอร์ใหม่เพื่อวัตถุประสงค์ที่คล้ายคลึงกัน

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

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

หน่วยความจำยังสามารถ re-size หรือ reallocated โดยใช้ malloc function โดยใช้ realloc อย่างไรก็ตามผู้ประกอบการรายใหม่ไม่สามารถปฏิบัติหน้าที่นี้ได้และถือว่าเป็นข้อเสียเปรียบหลักของผู้ประกอบการรายใดรายหนึ่ง ข้อดีอีกประการของ malloc ฟังก์ชันมากกว่าผู้ประกอบการใหม่คือ malloc สามารถขยายจำนวนหน่วยความจำได้อย่างรวดเร็ว นี้ยังคงใช้ malloc และ realloc เมื่อทำในสถานการณ์เดียวกันในภาษา C + +, โปรแกรมเมอร์จะต้องสร้างหน่วยความจำใหม่ด้วยตัวดำเนินการใหม่ หน่วยความจำใหม่ต้องมีขนาดที่ปรับเปลี่ยนและจะถูกคัดลอกไปยังข้อมูลจากบัฟเฟอร์เดิมบัฟเฟอร์เดิมต้องถูกลบหลังจากสำเนา นี้อาจเป็นกระบวนการที่ช้าสำหรับโปรแกรมเมอร์

โอเปอเรเตอร์ใหม่มีการใช้ประโยชน์จากฟังก์ชัน malloc โดยการส่งคืนชนิดข้อมูลที่ถูกต้องขณะที่ฟังก์ชันส่งกลับเป็นโมฆะ * ฟังก์ชัน malloc ยังไม่สามารถล้นมือได้เมื่อเทียบกับผู้ให้บริการรายใหม่ ๆ คุณลักษณะของผู้ประกอบการใหม่ก็คือว่ามีโอกาสน้อยที่จะทำผิดพลาดกับผู้ประกอบการเมื่อเทียบกับการทำงาน malloc นี่ถือเป็นข้อดีสำหรับผู้เขียนโปรแกรมโดยเฉพาะอย่างยิ่งถ้าพวกเขากำลังเขียนโค้ดจำนวนมากหรือใช้รหัสในช่วงเวลาที่ จำกัด malloc ฟังก์ชันและฟรีสามารถใช้ใน C + + แต่ไม่สามารถใช้งานได้โดยตรง ขอแนะนำให้ใช้ใหม่และลบแทน

สรุป:

1. Malloc เป็นฟังก์ชันในขณะที่ผู้ดำเนินการรายใหม่

2 ใหม่เป็นคุณสมบัติเฉพาะของภาษา C + + ในขณะที่ malloc ใช้ในภาษา C

3 Operator ใหม่ดังต่อไปนี้กับ "ลบ" ในขณะที่ฟังก์ชัน malloc ไปกับ "ฟรี. “

4 ฟังก์ชัน malloc เป็นฟังก์ชันของไลบรารีสำหรับภาษาซีในขณะที่โอเปอเรเตอร์ใหม่คือโครงสร้างระดับภาษาจากภาษาซีพลัส