Heap Corruption Error beim löschen eines dynamischen arrays



  • const int times=10000000;
    int main()
    {
    	srand(23);
    	int *arr=new int[times];
    	for(int i=0;i<times;i++)//prepare array with random numbers
    	{
    		arr[times]=rand()%1000;
    	}
    	delete arr;//wenn ich kein delete bzw. delete [] mache, bringt er den Fehler nicht
    
    /*natürlich vereinfacht auf das wesentliche  ;) */
    

    Wenn ich obiges Programm im debugmodus von MSVC++ 2008 laufen lasse, dann meldet er mir einen heap corruption error. Sobald ich in den release modus wechsle oder arr nicht delete kommt kein fehler.
    Warum ist das so und wie kann ich dieses Problem beheben?



  • naja, du musst natürlich delete[] nehmen, du willst ja auch ein array löschen.. der fehler wird wohl sein, weil du das 'falsche delete' nimmst..



  • das ist eben nicht der fehler. das hab ich im kommentar nach dem delete anzudeuten versucht 😉



  • Naja. Du greifst auf Speicher zu, den du nicht anfassen darfst.

    arr[times]=rand()%1000;
    

    Bereich geht von 0 bis times-1.

    EDIT:
    Ich nehme an, dass du dort i drin haben wolltest. Und am Schluss brav mit delete[] löschen. Dann klappts auch mit den Heap. 😉



  • *kopf an die wand schlag* natürlich. doof wenn man i mit times verwechselt 😉
    danke


Log in to reply