Problème realloc sur un tableau de int
Bonjour,
J'ai un problème de realloc que voici: je désire remplir un tableau de int, qui doit grandir ou rapetisser au fur et à mesure que les données (i_noSensor) sont collectées. Le tout fonctionne sur les 2 premières cases du tableau, mais la réallocation pour les cases suivantes est impossible, et je ne comprend vraiment pas pourquoi.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
int i_noSensors = 0;
int *i_sensorTable = malloc(i_noSensors * sizeof(*i_sensorTable)); // set the sensors table array
void getDetectedSensors()
{
int i, j = 0;
int * temp;
for(i = 0; i < i_activeSensors; i++) // scan all active sensors
{
if(sa_sensors[i].distance < 255) // if 255 nothing is detected
{
i_noSensors++;
temp = (int *)realloc((int *)i_sensorTable, i_noSensors * sizeof(i_sensorTable));
//REALLOC2(i_sensorTable,i_sensorTable, i_noSensors);
//i_sensorTable = realloc(i_sensorTable, i_noSensors * sizeof(*i_sensorTable));
if ( temp == NULL )
{
fprintf(stderr,"\nReallocation impossible");
free(i_sensorTable);
exit(EXIT_FAILURE);
}
else
{
i_sensorTable = temp;
i_sensorTable[j] = i;
printf("\ni_sensorTable[%d]: %d", j, i_sensorTable[j]);
j++;
}
}
}
} |
voici les résultats:
Code:
1 2 3 4 5 6
|
i_sensorTable[0]: 0
i_sensorTable[1]: 1
Reallocation impossible
Process returned -1073741819 (0xC0000005) execution time : 3.822 s
Press any key to continue. |
Le code n'est certainement pas le meilleur non plus, puisque c'est la première fois que j'utilise ces fonctions.
Merci à l'avance pour votre aide