"컴파일러가 메모리를 할당한다"고 말하는 것은 문자 그대로 의미가 정확하지 않을 수도 있지만 올바른 방식으로 암시하는 은유입니다.
실제로 일어나는 일은 컴파일러가 자체 메모리를 할당하는 프로그램을 만드는 것입니다. 메모리를 할당하는 프로그램이 아니라 OS입니다.
따라서 실제로 발생하는 것은 컴파일러가 메모리 요구 사항을 설명하는 프로그램을 만들고 OS에서 해당 설명을 사용하여 메모리를 할당하는 것입니다. OS가 프로그램이고 프로그램이 실제로 아무것도하지 않는 것을 제외하고는 CPU에 의해 수행되는 계산을 설명합니다. CPU가 실제로 복잡한 전자 회로라는 것을 제외하고는 인위적으로 작은 동형이 아닙니다.
그러나 프로그램과 컴파일러, CPU를 컴퓨터 안에 사는 작은 사람들이라고 생각하는 것이 합리적입니다. 왜냐하면 실제로 있기 때문이 아니라 인간의 뇌에 잘 맞는 은유이기 때문입니다.
일부 은유는 한 수준의 추상화에서는 사물을 설명하는 데 효과적이지만 다른 수준에서는 효과가 없습니다. 컴파일러 수준을 생각하면 컴파일되는 프로그램이 실제로 "할당 메모리"로 실행될 때 메모리가 할당되는 코드 생성 동작을 설명하는 것이 합리적입니다. 컴파일러의 작동 방식에 대해 생각할 때 올바른 아이디어를 얻었으므로 우리가하고있는 일을 잊어 버릴 정도로 오래 걸리지 않았습니다. 컴파일 된 프로그램의 실행 수준에서이 비유를 사용하려고하면 이상한 방식으로 오해의 소지가 있습니다.