Ir para conteúdo
Fórum Script Brasil
  • 0

duvida sobre alocacao de memoria


kuroi

Pergunta

observem esse codigo:

int main(void)
{
    int* a;
    
    a = new int;
    
    printf("%d", a);
}[/code]

vejam q ele me mostra a posicao de memoria onde foi alocado o a.

e vejam tb q eu não chamo o delete no final.

porque sempre q eu rodo o programa, o new aloca o a na mesma posicao??

ele sempre me mostra o endereco 211192.

mas assim: eu rodo o programa a primera vez, ele aloca o a no endereco 211192. o programa termina sem q o delete seja chamado.

o endereco 211192 não deveria continuar alocado?? tipo, quando eu abrir o programa a proxima vez, ele não deveria assumir q a posicao 211192 esta ocupada e alocar o a em outro endereco?? já q a memoria foi alocada dinamicamente.

o endereco 211192 não deveria ser liberado somente se eu chamar o delete??

quer dizer q se o programa é fechado, o espaco alocado dinamicamente é desalocado, mesmo q eu não faca isso manualmente no codigo??

então porque semprem mandam a gente desalocar, se o espaco vai ser liberado no final??

eu entendo q se tiver dentro de uma funcao ou num objeto, se o espaco alocado não é mais util mesmo q o programa ainda esteja em execucao, o melhor a se fazer é mesmo liberar.

mas então no exemplo acima, eu não tenho nenhum motivo pra chamar o delete do a??

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

É isso mesmo que você disse, quando o programa fecha, o windows desaloca a memória SOMENTE no final do programa, mesmo que não libere a memória.

O uso do delete é importante em algumas situações, como constantes alocamentos de memória, que se não forem liberados podem fazer o sistema travar por falta de memória.

Agora é bom liberar manualmente porque o windows pode falhar nessa desalocação e deixar lixo na memória

Abraço.

Editado por RonaldoRG
Link para o comentário
Compartilhar em outros sites

  • 0

hum, interessante. a primera vez q ouvi sobre alocamento dinamico de memoria, sempre me diziam q eu tinha q desalocar tudo no final e ai entendi q a memoria alocada dinamicamente permanecia alocada mesmo depois do fechamento do programa, a não ser q liberassemos no codigo.

ai fiquei com isso na cabeca ate hj, se não tivesse testado nunca ia saber.

valeu pela explicacao. de qualquer modo, mesmo em casos assim, vo continuar a liberar o espaco, porque não gosto de ver new sem delete.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...