[C++] Wo ist der Fehler ?

  • Hi ich habe diese Ferien mit C++ angefangen und bin jetzt soweit das ich mir ein paar Aufgaben für C++ gegoogled habe, da man ja durch den Sprachgebrauch sicherer wird. So da bin ich dann auf folgende Aufgabe gestoÃ?en:


    Code
    1. Bestimmen sie die Primfaktorzerlegung einen beliebigen Zahl (z.B. 200 = 2*2*2*5*5)

    Da hab ich mich dann eine viertel Stunde rangesessen und folgendes Programm ausgearbeitet:

    (Nicht durch die vielen Includes verwirren lassen, die stammen noch von voriegen Aufgaben)
    So das Problem ist folgendes: Das Programm funktioniert jetzt soweit, aber nach der Ausgabe der Primzahlenfaktoren, gibt es eine Laufzeitfehlermeldung mit:


    Run-Time Check Failure #2 - Stack arround the variable 'primes' was corrupted.


    Was mach ich falsch ?


    EDIT: Ich habe jetzt mal die Source kommentiert damit ihr euch nur damit ihr mir helft nicht erstmal komplett durch die Source durchdenken müsst =)

  • Also bei mir gibts keinen Error. Hast du im Release-Modus kompiliert? Wenn nicht, dann tu das. ;p


    // btw hab gerade mitn Debugger geschaut, liegt an deiner Arraysize von "primes". C++ fängt bei 0 an zu zählen, deshalb zählt deine for-schleife einen "primes" zuviel, sprich kann nicht darauf zugreifen. Einfach Arraysize von "primes" um 1 erhöhen.


    int primes[1000];

  • Oh danke du hast recht, ich seh jetzt erst geade das ich bei vielen for schleifen immer verschiedene Bedingungen gegeben habe bei denen aufgehört werden soll, ich habe jetzt mal alle for Bedingungen auf i < 999 gelegt, jetzt gibts auch keinen Fehler mehr thx:)

  • Wie kommt man von "Array size incorrect" oder so auf

    Zitat


    Run-Time Check Failure #2 - Stack arround the variable 'primes' was corrupted.


    ich wette du benutzt visual Fehlermeldunggenerator.
    Guck dir mal Code::Blocks mit mingw an :)