Errore accesso memoria [c, gdb]

di il
1 risposte

Errore accesso memoria [c, gdb]

Ciao,
non sviluppo da molto tempo in C, sto lavorando sul seguente codice
L'errore è "cannot access memory 0x7 lanciato quando in fillArray tento di leggere a"...ma a me sembra tutto corretto... Qualcuno sa dirmi cosa sbaglio ?!
Grazie per l'attenzione


#include <stdlib.h>
#include <stdio.h>

/* Riempie un array di interi di lunghezza 'len' puntato da 'a' con il
   valore 'val'*/

void fillArray(int* a, int len, int val)
{
  int i;
  for(i=0; i<len; i++)
    a[i]=val;
}


/* Riempie un insieme di array di interi di lunghezza 'arrayLength'
   con il valore 'val'.  L'insieme e' rappresentato per mezzo di un
   array di puntatori la cui lunghezza e' 'setSize'.
*/

void fillArraySet(int** a, int setSize, int arrayLength, int val)
{
  int i;
  for(i=0; i<setSize; i++)
    fillArray(a[i], arrayLength, val);
}

/* Crea un insieme di array di interi di lunghezza 'arrayLength'.  L'insieme
   e' rappresentato per mezzo di un array di puntatori la cui
   lunghezza e' 'setSize'. Viene ritornato un puntatore all'array che
   rappresenta l'insieme.
*/
 
int** createArraySet(int setSize, int arrayLength)
{
  int i;
  int** a= (int**) malloc(sizeof(int*)*setSize);
  for(i=0; i<setSize; i++)
    a[i]= (int*) malloc(sizeof(int)*arrayLength);
  //  return a;
}

/* Stampa un insieme di taglia 'setSize' di array di interi di
   lunghezza 'arrayLength'. */

void printArraySet(int** a, int setSize, int arrayLength)
{
  int i,j;
  for(i=0; i<setSize; i++)
    {
    for(j=0; i<arrayLength; i++)
      printf("%d ",a[i][j]);
    printf("\n");
    }
}

int main()
{
  const int setSize=7;
  const int arrayLength=20;

  int** s;

  printf("creo l'insieme di array, senza inizializzarlo\n");
  s=createArraySet(setSize,arrayLength);

  printf("riempio l'insieme di array di zeri\n");
  fillArraySet(s,setSize,arrayLength,0);

  printf("stampo l'insieme di array\n");
  printArraySet(s,setSize,arrayLength);

  printf("riempio l'insieme di array con 1\n");
  fillArraySet(s,setSize,arrayLength,1);

  printf("stampo l'insieme di array\n");
  printArraySet(s,setSize,arrayLength);
  
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte