Postado Dezembro 14, 2016 8 anos 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? (deixei um exemplo de tudo q falei em imagens) Editado Dezembro 14, 2016 8 anos 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(); }
Postado Dezembro 30, 2016 8 anos 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 Janeiro 4, 2017 8 anos por Lordfire (veja o histórico de edições)
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.