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 : 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++;
            }
        }
    }
}
voici les résultats:

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.
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