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);
}