Roubarei a primeira frase da resposta de Péter Török, mas elaborarei de maneira diferente: não necessariamente. Também pode optar por usar apenas o valor bruto 5 em vez de myvalno código compilado.
Tratar myvalcomo uma variável regular alocando espaço para ela na memória pode ter implicações de desempenho que variam de minúsculas a severas, dependendo da arquitetura e de como ela lida com a memória.
Trabalhando dessa maneira, um compilador emitirá uma instrução que diz algo como "carregar o registrador R com o que estiver no local da memória myval". A localização demyvalcomo um operando da instrução, ela sai diretamente do mesmo bloco de dados que a própria instrução. Em CPUs modernas, esse valor estará prontamente disponível no chip devido à pré-busca de instruções. Com o endereço em mãos, a CPU ainda precisa obter o valor da memória. Isso pode ocorrer rapidamente se o local estiver próximo no cache ou não tão rapidamente se não estiver. Não apenas a CPU precisa sair do chip para obter o valor, como pode forçá-la a extrair outros dados mais úteis do cache que precisarão ser trazidos mais tarde. Quando o programa está sendo executado em um sistema operacional que virtualiza a memória, o acesso a esse local pode causar uma falha na página, resultando na suspensão do programa até que a página necessária seja trazida para a RAM via E / S periférica (por exemplo, disco),
Ao conectar o valor constante ao código do objeto, o compilador emitirá uma instrução como "load register R with the value 5". Como o endereço de memória descrito acima, 5seria um operando para a instrução e disponível da mesma maneira (ou seja, pré-buscado). É aí que a semelhança termina, porque a CPU agora tem tudo o que precisa para colocar o 5registro R e continuar com seus negócios. Como endereços e registradores geralmente têm o mesmo tamanho, não há diferença no número de bytes que a instrução ocupa e a execução real ocorre com zero chances de erros de cache e falhas de página que podem ocorrer quando você retira algo da memória.
O compilador pode, como Péter apontou, alocar espaço e um símbolo para myvalcompilações de depuração. Não haveria nenhum mal em fazer isso e ainda manter a fiação do seu valor, já que o valor permanece o mesmo, não importa o quê e o símbolo esteja realmente lá para nós, humanos, usarmos na depuração.
Observe que isso se aplica apenas a valores que podem ser mantidos em registros, porque os registros são números inteiros por natureza. Outras constantes acabarão na memória.
storage of const objecta fonte da sua pergunta tem pouco valor.