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 + 0xC

    das komische ist ja bei n = m = 10 kommt sowas nicht
    oder bei anderen "kleinen" zahlen für die spalten / zeilenanzahl

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


Anmelden zum Antworten