Nói "trình biên dịch phân bổ bộ nhớ" có thể không thực sự chính xác theo nghĩa đen, nhưng đó là một phép ẩn dụ gợi ý theo cách đúng đắn.
Điều thực sự xảy ra là trình biên dịch tạo ra một chương trình phân bổ bộ nhớ của chính nó. Ngoại trừ việc đó không phải là chương trình phân bổ bộ nhớ, mà là HĐH.
Vì vậy, những gì thực sự xảy ra là trình biên dịch tạo ra một chương trình mô tả các yêu cầu bộ nhớ của nó và HĐH lấy mô tả đó và sử dụng nó để phân bổ bộ nhớ. Ngoại trừ việc HĐH là một chương trình và các chương trình không thực sự làm gì cả, chúng mô tả một tính toán được thực hiện bởi CPU. Ngoại trừ việc CPU thực sự chỉ là một mạch điện tử phức tạp, không phải là một homonculus nhỏ được nhân hóa.
Nhưng thật hợp lý khi nghĩ về các chương trình và trình biên dịch và CPU như những người nhỏ bé sống trong máy tính, không phải vì chúng thực sự là, mà bởi vì đó là một phép ẩn dụ rất phù hợp với bộ não con người.
Một số phép ẩn dụ hoạt động tốt để mô tả mọi thứ ở một mức độ trừu tượng, nhưng không hoạt động tốt ở cấp độ khác. Nếu bạn nghĩ về cấp độ của trình biên dịch, sẽ rất hợp lý khi mô tả hành động tạo mã sẽ dẫn đến việc bộ nhớ được cấp phát khi chương trình đang được biên dịch thực sự chạy dưới dạng "cấp phát bộ nhớ". Nó đủ gần để khi chúng ta nghĩ về cách trình biên dịch hoạt động, chúng ta có ý tưởng đúng và không quá dài đến nỗi chúng ta quên mất những gì chúng ta đang làm. Nếu chúng ta cố gắng sử dụng phép ẩn dụ đó ở cấp độ của chương trình được biên dịch đang chạy, nó sẽ gây hiểu lầm theo một cách kỳ lạ, đó là những gì bạn nhận thấy.