Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: FreeBSD
Por dark
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

return main(); (fatal) - C++
Linux user
Publicado por André em 23/07/2009

Login: andrezc, 1164193 pontos
[ Hits: 2693 ]

return main(); (fatal) - C++

Bom, vou mostrar para vocês um erro fatal em programação em C++: a função return main().

Primeiro vou criar um código como exemplo:

#include <iostream>
#include <windows.h>

using namespace std;

int main {
   system("pause");
   cout<<"Viva o Linux"<<endl;
   system("pause");
   system("cls");
   return main();
}

Esse código simplesmente exibe a mensagem "Viva o Linux" repetitivamente. Pois vamos lá, no começo do código criamos a variável "main".

Aí colocamos os comandos entre as chaves e no final colocamos "return main();".

Ou seja, ele voltará para o comando int main, toda vez que ele voltar criará outro main, e outro, e outro e outro...

E adivinhem o que acontece? Acaba com sua memória.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Cálculo da potência modular de forma eficiente
   Dica Linux recomendada Encontrando erros em C/C++ com Cppcheck
   Dica Linux recomendada Script que fecha portas
   Dica Linux recomendada Biometria facial no login do GDM
   Dica Linux recomendada Encontrando erros em C/C++ com Valgrind

Comentários
[1] Comentário enviado por andrezc em 28/08/2009 - 19:16h:

Só me desculpem pelo windows.h e pelo system("pause"); eu fiz o código em um ambiente Windows.

[2] Comentário enviado por gedarius em 08/03/2010 - 13:06h:

Não entendi... não manjo de C++, porém se vc fizer um "for" ele não vai chamar a função main varias vezes... e outra, acho que é só vc utilizar um "return 0" que é melhor não?

bom, de qqr maneira, se vc diz que é fatal, qual a alternativa???

[3] Comentário enviado por danltmz em 20/03/2010 - 15:10h:

gedarius.. não se deve usar 'return main()'. Sintaticamente está correto, mas isso causa uma chamada recursiva eterna. Caso você não saiba o que seja recursividade, é o ato de uma função chamar a si mesma, dentro do seu corpo.
no caso da função main, sim, deve-se usar 'return 0' (pelo menos eu tenho isso como padrão) e apenas em caso de erro, usar a função 'exit()' informando um valor de retorno que indique o erro(qualquer valor de retorno diferente de 0 é considerado erro).


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.