การพูดว่า "คอมไพเลอร์จัดสรรหน่วยความจำ" อาจไม่ถูกต้องตามข้อเท็จจริงในความหมายตามตัวอักษร แต่มันเป็นคำอุปมาที่ชี้นำในทางที่ถูกต้อง
สิ่งที่เกิดขึ้นจริงคือคอมไพเลอร์สร้างโปรแกรมที่จัดสรรหน่วยความจำของตัวเอง ยกเว้นว่าไม่ใช่โปรแกรมที่จัดสรรหน่วยความจำ แต่เป็นระบบปฏิบัติการ
ดังนั้นสิ่งที่เกิดขึ้นจริง ๆ คือคอมไพเลอร์สร้างโปรแกรมที่อธิบายความต้องการของหน่วยความจำและระบบปฏิบัติการใช้คำอธิบายนั้นและใช้มันเพื่อจัดสรรหน่วยความจำ ยกเว้นว่าระบบปฏิบัติการเป็นโปรแกรมและโปรแกรมไม่ได้ทำอะไรเลยพวกเขาอธิบายการคำนวณที่ดำเนินการโดย CPU ยกเว้นว่าซีพียูนั้นเป็นเพียงวงจรอิเล็กทรอนิกส์ที่ซับซ้อนไม่ใช่โฮโมคูลัสตัวเล็ก ๆ
แต่มันก็สมเหตุสมผลที่จะคิดโปรแกรมและคอมไพเลอร์และซีพียูในฐานะคนตัวเล็กที่อาศัยอยู่ในคอมพิวเตอร์ไม่ใช่เพราะมันเป็นจริง แต่เพราะนั่นเป็นคำอุปมาที่เหมาะกับสมองมนุษย์
คำอุปมาอุปมัยบางอย่างทำงานได้ดีสำหรับการอธิบายสิ่งต่าง ๆ เกี่ยวกับสิ่งที่เป็นนามธรรมในระดับหนึ่ง แต่ไม่ได้ผลในระดับอื่น ถ้าคุณคิดว่าระดับคอมไพเลอร์มันสมเหตุสมผลแล้วที่จะอธิบายการสร้างโค้ดที่จะส่งผลให้หน่วยความจำถูกจัดสรรเมื่อโปรแกรมที่ถูกคอมไพล์ถูกเรียกใช้จริง ๆ ว่า "การจัดสรรหน่วยความจำ" ใกล้พอที่เมื่อเราคิดว่าคอมไพเลอร์ทำงานอย่างไรเรามีความคิดที่ถูกต้องและไม่ยืดเยื้อจนลืมสิ่งที่เราทำ หากเราพยายามใช้คำอุปมาดังกล่าวกับระดับของการคอมไพล์โปรแกรมที่กำลังรันอยู่มันทำให้เข้าใจผิดในทางที่ผิดซึ่งเป็นสิ่งที่คุณสังเกตเห็น