Archived

This topic is now archived and is closed to further replies.

Ethan

Neu definition

Recommended Posts

Ethan    122
Hi. Ich will einen Vertex-punkt neu definieren, aber ohne die daten zu verlieren. Bei meinem code ist das problem, das ich die Variable vVertex nicht mehr löschen kann. Kann mir jemand helfen? struct VERTEX{ float x; float y; float z; float tu; float tv; }; VERTEX *vVertex; int nVertexCount; // Fügt einen neuen Index zu einem Objekt hinzu void AddIndexToVERTEX(int nIndex) { if (nIndex==0) { vVertex = new VERTEX[0]; nVertexCount = 1; } else { VERTEX *tmpVertex; tmpVertex = new VERTEX[nIndex-1]; tmpVertex = vVertex; vVertex = new VERTEX[nIndex]; vVertex = tmpVertex; nVertexCount = nIndex+1; for (int x=0;x

Share this post


Link to post
Share on other sites
123cs    122
tmpVertex = new VERTEX[nIndex-1];
tmpVertex = vVertex;

vVertex = new VERTEX[nIndex];
vVertex = tmpVertex;

dieser code tut garichts, ausser spiecher verschwenden.
den ersten beiden zeilen weißt du tmpVertex einen speicherblock zu, und löschst gleich darauf den einziegen verweis auf ihn, du wirst ihn also weder wieder freigen können noch auf ihn zugreifen können.(der speieher ist verloren)
das gleiche gilt für die anderen beiden zeilen.

Share this post


Link to post
Share on other sites
VolkerG    151
Well, the solution is quite simple. Just create the new, larger array, copy the contents of the smaller array into the new one, delete the old one and use the new one as the current array. But that isn''t very efficent, since each add causes a allocation and a copy operation. But it has been said before, you could just use the STL''s vector class.
By the way, when allocating with new [] you just have to use a single delete []. You MUST NOT delete each element seperately.

Share this post


Link to post
Share on other sites
Ethan    122
Wie kann ich dann ein arry neu definieren?

Oder gibt es sowas ähnliches wie realloc?

Edited by - Ethan on January 30, 2002 7:40:27 AM

Share this post


Link to post
Share on other sites