PDA

Visualizza la versione completa : [C] Aggiungere elementi ad un array con malloc/realloc


canax
17-08-2009, 23:27
Ciao, allora ho una struttura cosi:

typedef struct InmDefectsTwoDimFrame
{
int frameNr;
int nr;
InmDefectRect *defects;
}
InmDefectsTwoDimFrame;

dove

typedef struct InmDefectRect
{
int ID;
int type;
int weight;
InmImageCoordPoint dimension;
InmWorldCoordPoint position;
InmDefectRelation relation;
}
InmDefectRect;

Io voglio che la struttura InmDefectsTwoDimFrame contenga un array di tipo InmDefectRect il quale venga aggiornato dentro un for aggiungendo elementi. Mi potreste dire come fare l'allocazione della momoria, perchè attualmente faccio così e mi viene dato errore a runtime quando fa il secondo realloc:

*defectsFrame = (InmDefectsTwoDimFrame *) realloc(*defectsFrame, (totalTwoDimdefects + boxesSize) *sizeof(InmDefectsTwoDimFrame **));

(*defectsFrame)->defects = (InmDefectRect *) realloc((*defectsFrame)->defects, (totalTwoDimdefects + boxesSize) * sizeof(InmDefectRect));

spero che sapete dirmi qualcosa

Grazie

canax
18-08-2009, 01:54
Risolto....

alka
18-08-2009, 10:11
Originariamente inviato da canax
Risolto....
L'etica del forum suggerisce di postare la soluzione, in modo che possa essere utile a tutti gli utenti che dovessero trovarsi ad affrontare lo stesso problema.

Ciao! :ciauz:

canax
18-08-2009, 11:20
Hai ragione :-)!!

In pratica dichiaravo sbagliato la struttura principale, perche la dichiaravo con il doppio asterisco **.
Inoltre visto che si stratta di una struttura che contiene un array dinamico ho dovuto allocare solo quello:

laserTriangulationDefects.defects = (InmDefect *) realloc(laserTriangulationDefects.defects, (totalTriangulationDefects+1) * sizeof(InmDefect));


Ciao ciao

alka
18-08-2009, 11:37
Originariamente inviato da canax
In pratica dichiaravo sbagliato la struttura principale, perche la dichiaravo con il doppio asterisco **. [...]

Ottimissimo e ben fatto! :)

Loading