[C++] deleting multidimensional array

Pagina: 1
Acties:

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 21-08 10:06
Ik zit dus met het volgende probleem als ik probeer een multidimensional array te verwijderen met delete dan krijg ik dus een assert error...en ik heb geen idee wat ik nu fout doe...heb al gezocht in enkele boeken maar daar staat het dus precies zo....
stukje code hier onder is een tot het minimum gestripte versie van mijn programma
en hier krijg ik dus ook de assert error...wat doe ik verkeerd?

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
main()
{
    char **test;
    test = new char * [146];

    for (int i = 0; i < 146; i++)
    {
        test[i] = new char[32];
        test[i] = "hallo";
    }

    for (i = 0; i < 146; i++)
    {
        delete test[i];
    }
    delete[] test;
}


.modbreak: gebruik [code=c++]...[/code] tags

[ Voor 10% gewijzigd door .oisyn op 03-09-2003 13:51 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

C++:
1
test[i] = "hallo"; 


daar assign je een nieuwe pointer aan test[i]. "hallo" is een const char[6], en kun je dus niet deleten. Wat jij wilt is de contents van "hallo" kopieren naar de gealloceerde buffer. Doe dat met strcpy ()

(of nog beter, gebruik gewoon std::string)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Regel 14 is trouwens ook fout als je er wel de allocated pointer in hebt staan:
C++:
1
delete [] test[i];    // Is namelijk ook een array

Professionele website nodig?