Ir para conteúdo
  • Cadastre-se

Afinal, C++ tem GC?


Posts Recomendados

Tudo tranquilo, glr?

Eu criei esse tópico pra saber se C++ tem MESMO garbage collector. Uns dizem que sim, outros que não, enfim...

Para quem não sabe, há dois métodos de instanciação de classes atualmente, sendo eles:

Classe a(params); // cria a classe
//delete a; vai acusar erro



Classe *a = new Classe(params); //cria classe
delete a; //deleta a classe

Então, teoricamente, C++ tem garbage collector, né? Porque o primeiro modo de instanciar vai deletar a classe como qualquer outro valor, ou seja, vai ter duração de escopo.

Por que dizem que C++ não tem GC? Ou, se n tem, por que ele não tem? o.O

 

 

(deixei um exemplo de tudo q falei em imagens)

Sem título.pngSem_t%C3%ADtulo1.png.1a512a05a288785194083d57f55db0cb.png

 

 

Sem_título1.png

Editado por otteN (veja o histórico de edições)

Nem todo loop infinito é ruim ;P 

User *eu = new User("otteN");
RepSystem<User> *myRep = new RepSystem<User>("jóinha");
myRep->setAlvo(eu);

/* só por ser criado já sou o melhor membro */ 

while(eu->isMelhorMembro()){
myRep->reputar();
}

 

Link para o post
Compartilhar em outros sites
  • 3 weeks later...

Isso não é garbage collection. GC é quando existe um algoritmo que encontra e limpa referências perdidas na memória, como quando você dá new sem dar delete (spoiler alert - você nunca mais recupera). O que C++ tem com variáveis é só escopo mesmo, se chama call stack.

 

Leitura recomendada: https://en.wikipedia.org/wiki/RAII

 

Não tem porque C++ é pra programador grandinho o suficiente pra gerenciar a própria memória. Isso permite você criar seu próprio alocador, até tem uns mais rápidos que o padrão pra certos tipos de uso (ex. tcmalloc e jemalloc)

 

Also parece que fez tudo em Java. Esquece esse mundo de "this" e revisa como se faz construtores em C++ :)

Editado por Lordfire (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo