Ir ao conteúdo
  • Cadastre-se
nKamikaze

problema com alocacao de matriz usando calloc

Posts recomendados

olah pessoal, tenho uma matriz alocada dinamicamente com calloc de nome sets. é uma variavel global e foi declarada do seguinte modo

code:

sets = (int **) calloc (n*n+1, sizeof(int *));

for (int i = 1; i <= (n*n+1); i++)

sets
= (int *) calloc (n+1, sizeof(int));

acontece que quando tento acessar sets[1][1] apos essa declaracao dah certo, mas se tentar acessar em outra funcao aparece o seguinte erro:

Unhandled exception at 0x00402f5e in kruskal.exe: 0xC0000005: Access

violation reading location 0x00000036.

o q pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Difícil saber sem ver o resto do programa !

Mas por enquanto, sugiro que verifique os seguintes detalhes:

1- A variável n (usada para definir o tamanho do array) está inicializada corretamente ? Porque se não está, pode ter valor zero, ou pior ainda, um valor aleatório, inclusive negativo. Neste caso, o tamanho do array estaria errado.

2- O laço "for" do seu exemplo não está alocando memória para o primeiro elemento do array sets[0], pois começa com i=1. Lembre que em C os arrays sempre começam no elemento com índice 0. Se as outras funções tentam acessar o conteúdo do elemento sets[0], pode acontecer um erro do tipo que você refere.

Bom, ja é alguma coisa para você começar !

Boa sorte,

Elga.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem q usar calloc?? calloc é estão xatinho...

Eu quase nao uso calloc mas me corrija se estiver errado: Calloc nao é utlizado pra alocar uma quantidade sequencial da memoria (assim poderá utilizar como vetor)??

então você ta criando uma estrutura de matriz do tipo???


typedef struct matriz{
int mat[max][max];
int lin;
int col;
}mat;

Dai usando o calloc para alocar um sequencia na memoria para guadar as matrizes criadas ??

Não seria algo do tipo ?


mat *arranjo;

arranjo = (mat*)calloc(n,sizeof(mat));//onde n é o numero de matrizes q sera alocada

isso nao daria certo???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...