haben new und delete probleme ?
-
hallo
ich programmier ein bissler in directx, da wollt ich eine wand berechnen lasse, eine "einheits-wand" 1 x 1 gross, mit n zeilen und m spalten,
und benutzt dazu diesen algorithmus:SimpleVertex* svx = new SimpleVertex[(2 + vec2Grosse.x * 2) * vec2Grosse.y]; int z = 0; for ( float y = 0; y < vec2Grosse.y; y += 1.0f ) { svx[z].fX = 0; svx[z].fY = y / vec2Grosse.y; svx[z].fZ = 0; int i = 0; float x = 0.0f; for ( i; i < (vec2Grosse.x * 2); i += 2 ) { svx[z + i + 1].fX = x / vec2Grosse.x; svx[z + i + 1].fY = (y + 1.0f) / vec2Grosse.y; svx[z + i + 1].fZ = 0; x += 1.0f; svx[z + i + 2].fX = x / vec2Grosse.x; svx[z + i + 2].fY = y / vec2Grosse.y; svx[z + i + 2].fZ = 0; } svx[z + i + 1].fX = x / vec2Grosse.x; svx[z + i + 1].fY = (y + 1.0f) / vec2Grosse.y; svx[z + i + 1].fZ = 0; z += (2 + vec2Grosse.x * 2); }
das klappt ganz gut, aber als ich mal n = 20 und m = 20 versuchen wollte
( also 840 vertexes ) kahm dieser fehler beim deleten der vertexes (delete[] vertexes;
:
First Change Exception
> 0049AF07: __internal_free
> 43545df3: __internal_free + 0x28
> """""""": __org_free + 0xD
> """""""": __org_delete + 0xC
> """""""": __org_deletea + 0xCdas komische ist ja bei n = m = 10 kommt sowas nicht
oder bei anderen "kleinen" zahlen für die spalten / zeilenanzahlhat new probleme bei der erstellung von grossen speicherblöcken? oder muss ich den fehler bei mir suchen ?
danke schonmal
-
new[] könnte ein Problem bei "großen" Speicherblöcken haben, aber die paar Bytes, die du hier verbrätst, sind nicht "groß". Ich würde "groß" so bei ca. 1GB ansiedeln.
Also musst du wohl den Fehler bei dir suchen.