Ir ao conteúdo
  • Cadastre-se

Problemas com cout


diogorupolo

Posts recomendados

Pessoal estou tendo um problema estranho. Toda vez que comento um cout no programa, meus resultados começam a apresentar valores estranhos, mudam de valores. Não sei o que está acontecendo. As vezes pegam resultados que são lixos. Perguntei em um outro lugar e o rapaz me respondeu o seguinte:

" Inclua bound checking nas opções do compilador. Aparentemente você está em algum momento acessando uma área de memória inválida pelo seu código. Este tipo de erro ocorre tipicamente por duas situações: acessar índices inválidos de vetores e acessar ponteiros inválidos. Como eu não vi ponteiros no seu código imagino que o erro então esteja ligado a primeira opção. Se você estiver usando gcc a opção é "-fbounds-checking".

Não consegui fazer isso, nem resolver meu problema. Estou usando o Codeblocks no gcc. Testei no Dev, apresentou o mesmo problema. Não tem como postar o código aqui pois tem vários arquivos. Alguém já se deparou com algo similar?

Grato

Diogo Rupolo

Link para o comentário
Compartilhar em outros sites

char *Lixo()
{
char vai_virar_lixo[] = "Realmente vai virar lixo";
return vai_virar_lixo;
}

int main()
{
cout << Lixo();

getchar();

return 0;
}

veja esse codigo acima, a mensagem deveria aparecer mas não aparece.

o que acontece, na linguagem C quando você inicia uma variavel dentro de um metodo, ela é destruida ao fim do metodo, por isso aparece o lixo.

char *Lixo(char *src)
{
src = "não vai virar lixo";
return src;
}

int main()
{
char str[50];
cout << Lixo(str);

getchar();

return 0;
}

bom, não sei se é isso que acontece no seu codigo, mas sofri muito com esse problema.

esta usando char* ou std::string?

Link para o comentário
Compartilhar em outros sites

Não estou usando nenhum char* ou std::string, mas utilizo vetores com variáveis declaradas de certas dimensões. Acho que é daí que está vindo esse erro. Por exemplo eu declaro uma função com os seguintes parâmetros.


float fluxo_carga(int sol_no[], int sol_prof[], int NBA)
{
//Dentro da função estou usando alguns vetores que variam de tamanho conforme o parâmetro passado

float v_k[NBA+1][3],i_k[NBA+1][3],j_k[NBA+1][3],delta_s[NBA+1][3], soma[NBA+1][3];
//Código continua aqui ......

}

Acho que é esses vetores que podem estar ocasionando esses problemas.

Ou pode ser dados de vetores declarados globalmente que acesso da função principal, mas não uso todos os dados deles. Sinceramente não sei de onde origina-se o erro..

Att;

Diogo

Link para o comentário
Compartilhar em outros sites

Não estou usando nenhum char* ou std::string, mas utilizo vetores com variáveis declaradas de certas dimensões. Acho que é daí que está vindo esse erro. Por exemplo eu declaro uma função com os seguintes parâmetros.


float fluxo_carga(int sol_no[], int sol_prof[], int NBA)
{
//Dentro da função estou usando alguns vetores que variam de tamanho conforme o parâmetro passado

float v_k[NBA+1][3],i_k[NBA+1][3],j_k[NBA+1][3],delta_s[NBA+1][3], soma[NBA+1][3];
//Código continua aqui ......

}

Acho que é esses vetores que podem estar ocasionando esses problemas.

Ou pode ser dados de vetores declarados globalmente que acesso da função principal, mas não uso todos os dados deles. Sinceramente não sei de onde origina-se o erro..

Att;

Diogo

Isso só funcionaria se NBA fosse uma constante, portanto, alocação dinâmica não pode ser efetuada dessa forma verde.gif.

Use as keywords new e delete do C++.

Espero ter ajudado smiled.gif.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!