Ir para conteúdo
Fórum Script Brasil

Marcel Bonatto

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Marcel Bonatto

Marcel Bonatto's Achievements

0

Reputação

  1. Olá a todos Minha dúvida está na hora em que o programa que desenvolvi faz a liberação da memória. O programa serve para verificar se uma dada matriz fornecida pelo usuário compõem um quadrado mágico, que é quando numa matriz a soma dos elementos de cada linha é igual à soma dos elementos de cada coluna e igual à soma dos elementos da diagonal principal e igual, também, à soma dos elementos da diagonal secundária. Para isso, declarei um ponteiro de ponteiros e uma variável para o tamanho da memória que será alocada. int** pMatriz; int n; printf("Digite o tamanho da matriz quadratica: "); scanf("%d", &n); pMatriz = (int**)malloc(n*sizeof(int*)); if(pMatriz == NULL) {exit(-1);} for(lin=0;lin<n;++lin){ *(pMatriz+lin) = (int*)malloc(n*sizeof(int)); if(*(pMatriz+lin) == NULL) {exit(-1);} } Fiz a soma de uma linha e atribui esse valor para uma variável de soma. Depois fiz vários laços, nos quais uma variável de soma geral é acumulada com os valores das linhas, colunas, diagonal principa e diagonal secundária. for(lin=0;lin<n;++lin){ for(col=0;col<n;++col){ somageral += (int)*(pMatriz+(lin*n+col)); } } Por fim, verifico se o valor que está na variável soma é equivalente ao valor da variável soma geral dividida pela variável n, que é multiplicada por dois e depois somada pelo valor 2. if(soma == somageral/(n * 2 + 2)) printf("A matriz compoem um quadrado magico\n"); else printf("A matriz não compoem um quadrado magico\n"); Após tudo isso, então, faço a liberação da memória que foi alocada dinamicamente. for(lin=0;lin<n;++lin){ free(*(pMatriz+lin)); } free(pMatriz); Porém, na parte da função free(pMatriz[lin]) que é gerado o seguinte erro: Unhandled exception at 0x102d12b4 (msvcr90d.dll) in Exercicio_05.exe: 0xC0000005: Access violation reading location 0x00000000. O que pode estar causando tal erro? Grato a todos.
×
×
  • Criar Novo...