1
เหตุใดจึงมีการจัดสรรหน่วยความจำสแต็คเมื่อไม่ใช้
ลองพิจารณาตัวอย่างต่อไปนี้: struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } รหัสการประกอบที่สร้างขึ้นสำหรับvector::empty(โดยเสียงดังกราวด้วยการเพิ่มประสิทธิภาพ): push rax call vector::size() const test eax, eax sete al pop rcx ret ทำไมมันจัดสรรพื้นที่สแต็ค? มันไม่ได้ใช้เลย pushและpopอาจถูกมองข้าม บิลด์ที่ปรับให้เหมาะสมของ MSVC และ gcc ยังใช้พื้นที่สแต็กสำหรับฟังก์ชั่นนี้ (ดูที่godbolt ) ดังนั้นต้องมีเหตุผล