ในทางตรงกันข้ามคุณควรชอบการจัดสรรสแต็กเสมอเท่าที่ตามหลักทั่วไปคุณไม่ควรมีใหม่ / ลบในรหัสผู้ใช้ของคุณ
อย่างที่คุณพูดเมื่อมีการประกาศตัวแปรบนสแตกตัวทำลายของมันจะถูกเรียกโดยอัตโนมัติเมื่อมันอยู่นอกขอบเขตซึ่งเป็นเครื่องมือหลักของคุณในการติดตามอายุการใช้งานของทรัพยากรและหลีกเลี่ยงการรั่วไหล
ดังนั้นโดยทั่วไปทุกครั้งที่คุณต้องจัดสรรทรัพยากรไม่ว่าจะเป็นหน่วยความจำ (โดยการเรียกใหม่) ตัวจัดการไฟล์ซ็อกเก็ตหรือสิ่งอื่นใดให้รวมไว้ในคลาสที่ตัวสร้างได้รับทรัพยากรและผู้ทำลายจะปล่อยทรัพยากรนั้น จากนั้นคุณสามารถสร้างออบเจ็กต์ประเภทนั้นบนสแต็กและคุณรับประกันได้ว่าทรัพยากรของคุณจะได้รับอิสระเมื่ออยู่นอกขอบเขต ด้วยวิธีนี้คุณไม่ต้องติดตามคู่ใหม่ / ลบทุกที่เพื่อให้แน่ใจว่าคุณจะหลีกเลี่ยงการรั่วไหลของหน่วยความจำ
ชื่อที่พบบ่อยที่สุดสำหรับสำนวนนี้คือRAII
นอกจากนี้ให้ดูคลาสตัวชี้อัจฉริยะที่ใช้ในการรวมตัวชี้ผลลัพธ์ในกรณีที่หายากเมื่อคุณต้องจัดสรรบางสิ่งด้วยสิ่งใหม่ภายนอกวัตถุ RAII เฉพาะ คุณส่งตัวชี้ไปยังสมาร์ทพอยน์เตอร์แทนซึ่งจะติดตามอายุการใช้งานของมันเช่นโดยการนับอ้างอิงและเรียกตัวทำลายเมื่อการอ้างอิงล่าสุดอยู่นอกขอบเขต ไลบรารีมาตรฐานมีstd::unique_ptr
ไว้สำหรับการจัดการตามขอบเขตอย่างง่ายและstd::shared_ptr
ซึ่งอ้างอิงการนับเพื่อใช้การเป็นเจ้าของร่วม
แบบฝึกหัดจำนวนมากแสดงให้เห็นถึงการสร้างอินสแตนซ์อ็อบเจ็กต์โดยใช้ข้อมูลโค้ดเช่น ...
ดังนั้นสิ่งที่คุณค้นพบก็คือบทช่วยสอนส่วนใหญ่ดูด ;) บทช่วยสอนส่วนใหญ่จะสอนวิธีปฏิบัติ C ++ ที่ไม่ดีให้กับคุณรวมถึงการเรียกใหม่ / ลบเพื่อสร้างตัวแปรเมื่อไม่จำเป็นและทำให้คุณมีเวลาติดตามตลอดอายุการใช้งานของการจัดสรรของคุณ