Ir ao conteúdo
  • Cadastre-se

Erro de Alocação variável de memória.


amzero

Posts recomendados

Olá, estou fazendo um código no CodeBlocks na última versão do mesmo. Não sei se pode ser erro do CodeBlocks, muitos me falaram que ele não é tão certo.

 

o código é o seguinte

 

Estrutura ** Rio_Principal = new Estrutura*[N_Trib];

Sendo N_Trib um inteiro  com valor 5;

 

Acontece que eu tenho 1 arquivo .cpp e 2 arquivos .h que são chamados pelos .cpp.(Não sei se isso pode ser o erro)

 

O erro é o seguinte:

Quando eu chamo a funcao que possui o código acima por uma funcao do .cpp, ele roda certinho.

mas quando eu chamo a mesma função que contém o código acima, por um função do .h ele dá pau como se fosse erro de ponteiro. Não faz sentido algum.

Quando eu substituo para  

 

Estrutura ** Rio_Principal = new Estrutura*[5];

 

ele da Std: Bad Allocation.

 

Não consigo entender o que está acontecendo.

 

Obrigado desde já.

Link para o comentário
Compartilhar em outros sites

Muito obrigado pela ajuda, mas eu já resolvi o problema:

 

Estrutura é o nome da minha estrutura(struct) que eu fiz.

**Rio_Principal era realmente para uma matriz.

E segundo que foi resolvido copiando as funções de dentro dos .h para o .cpp principal. Ai funcionou tudo de boa,

agora eu vou postar outra dúvida que é fundamental na programação em C:

Quando você declara variável dentro de uma função, quando ela termina elas são liberadas automaticamente.

E quando são alocadas dinamicamente, elas são também liberadas automaticamente?

 

Abraço.

Link para o comentário
Compartilhar em outros sites

 

Quando você declara variável dentro de uma função, quando ela termina elas são liberadas automaticamente.

E quando são alocadas dinamicamente, elas são também liberadas automaticamente?

 

Abraço.

 

1) Sim, quando uma função chega ao seu final todas as variáveis declaradas dentro dela são 'liberadas'.

 

2) Não e cuidado! Alocadas manualmente através do operador new devem ser desalocadas manualmente através do operador delete ou delete[]. O compilador não o fará por você.

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...