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.
voici les résultats:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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++; } } } }
Le code n'est certainement pas le meilleur non plus, puisque c'est la première fois que j'utilise ces fonctions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Merci à l'avance pour votre aide
Partager