Errore accesso memoria [c, gdb]

Forum di discussioni su C e C++

Moderatori: Toki, Rey

Errore accesso memoria [c, gdb]

Messaggioda NicAnt » 25 giu 2010, 23:53

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[i]"...ma a me sembra tutto corretto... Qualcuno sa dirmi cosa sbaglio ?!
Grazie per l'attenzione :)

Codice: Seleziona tutto
#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);
 
}
NicAnt
New Entry
 
Messaggi: 1
Iscritto il: 25 giu 2010, 23:46

Re: Errore accesso memoria [c, gdb]

Messaggioda ixamit » 29 giu 2010, 21:30

Codice: Seleziona tutto
    //for(j=0; i<arrayLength; i++)  ERR
        for(j=0; j<arrayLength; j++)


Saluti,
Max
ixamit
Utente Senior
 
Messaggi: 268
Iscritto il: 14 ott 2009, 00:33


Torna a C/C++

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron
IPROGRAMMATORI.IT 2010. Tutti i diritti riservati. - P.IVA 04135460873 | Pubblicità | Termini e Condizioni - Privacy Policy | RSS 2.0 - Le news di IProgrammatori.itRSS