A memΓ³ria possui 3 segmentos: text/code segment, stack segment e heap segment.
-
Text/code segment: onde o cΓ³digo compilado do programa reside. Γ a representaΓ§Γ£o do programa em linguagem de mΓ‘quina com as operaΓ§Γ΅es que devem ser realizadas, incluindo todas as funΓ§Γ΅es, tanto as definidas pelo usuΓ‘rio, como as do sistema.
-
Stack segment: espaΓ§o onde variΓ‘veis automΓ‘ticas que estΓ£o dentro de funΓ§Γ΅es serΓ£o alocadas. Usa o conceito de FIFO (first in, first out), ou seja, dados sΓ£o alocados e desalocados por apenas uma das "pontas", o Top do stack. Ex: todas as variΓ‘veis declaradas no main() entram no stack. Se main() chamar func1(), func1() - junto com parΓ’metros que tiver - passa para o Top do stack. Quando func1() retornar algum valor (return), ela Γ© desalocada do stack. Evidente que ficarΓ‘ lixo nessa Γ‘rea da memΓ³ria, deixado por um prΓ©vio uso.