Das Sprichwort "Der Compiler weist Speicher zu" mag im wörtlichen Sinne nicht sachlich korrekt sein, aber es ist eine Metapher, die auf die richtige Weise andeutet.
Was wirklich passiert, ist, dass der Compiler ein Programm erstellt, das seinen eigenen Speicher zuweist. Es ist jedoch nicht das Programm, das den Speicher zuweist, sondern das Betriebssystem.
Was wirklich passiert, ist, dass der Compiler ein Programm erstellt, das seinen Speicherbedarf beschreibt. Das Betriebssystem verwendet diese Beschreibung, um Speicher zuzuweisen. Abgesehen davon, dass das Betriebssystem ein Programm ist und Programme eigentlich nichts tun, beschreiben sie eine Berechnung, die von der CPU durchgeführt wird. Abgesehen davon, dass die CPU nur eine komplizierte elektronische Schaltung ist, kein anthropomorphisierter kleiner Homonculus.
Aber es ist sinnvoll, sich Programme, Compiler und CPUs als kleine Menschen vorzustellen, die in einem Computer leben, nicht weil sie es tatsächlich sind, sondern weil dies eine Metapher ist, die gut zum menschlichen Gehirn passt.
Einige Metaphern eignen sich gut für die Beschreibung von Dingen auf einer Abstraktionsebene, funktionieren auf einer anderen Ebene jedoch nicht so gut. Wenn Sie auf der Ebene des Compilers denken, ist es sinnvoll, den Vorgang des Generierens von Code zu beschreiben, der zur Zuweisung von Speicher führt, wenn das zu kompilierende Programm tatsächlich als "Speicherzuweisung" ausgeführt wird. Es ist nah genug, dass wir, wenn wir darüber nachdenken, wie ein Compiler funktioniert, die richtige Idee haben und es nicht so langwierig ist, dass wir vergessen, was wir getan haben. Wenn wir versuchen, diese Metapher auf der Ebene des kompilierten Programms zu verwenden, das ausgeführt wird, ist dies auf seltsame Weise irreführend, was Ihnen aufgefallen ist.