Hilfe Memory managment



  • Hi, ich muss als hausaufgabe , einen dynamischen array erstellen und dann alle primzahlen zwischen 2 und n ausgeben.

    Der Bot meiner Uni gibt mir aber leider eine Fehlermeldung zurück und zwar:

    [ INFO] Das Programm liest oder schreibt nicht reservierte Speicherstellen!
    [ INFO] Du greifst auf unreferenzierten Speicher zu. Beachte, dass print_prim genau die Länge deines Arrays übergeben bekommen muss.
    [ INFO] Das Programm gibt nicht alle reservierten Speicherbereiche zurück.
    [ERROR] Problem mit Memory Management

    Was hab ich falsch gemacht hab ich zu viel speicher reserviert?

    Edit: ERLEDIGT DANKE ! 😃



  • Mal angenommen "laenge" hätte den Wert 5. Dann reservierst du für 5 Zahlen Speicher in deinem "array".

    Dann würdest du mit dem folgenden Code ...

    for(i=2;i<laenge;i++){
      for(j=2;j<laenge/2;j++){
        array[i*j]=0;
      }
    }
    

    ... auf dein array mit dem Index 8 (i=4, j=2, i*j=8) zugreifen!



  • Überlege mal, wie i*j und laenge sich zueinander verhalten.



  • Hier in der Schleife wird i mit 0 initialisiert. Die Bedingung "array[i]>0" muss in diesem Fall abfangen, dass du bei einem kleineren "i" als 2 in den folgenden Code reinläuft. Ist das sichergestellt? Ansonsten greifst du da nachher noch mit einem negativen Index auf dein Array zu und das kommt nicht gut. Da würde ich doch einfach die Schleifenvariable i mit 2 initialisieren und dieses Problem wäre gelöst und du sparst dir 2 unnötige Schleifendurchläufe.

    for(i=0;i<laenge;i++){
      if(array[i]>0) array[i-2]=1;
    }
    


  • Perfekt danke euch, hab meinen Fehler behoben und wird nun von der Uni aktzepiert.

    👍 😃



  • Und warum löschst du Asi deinen ersten Beitrag?



  • Und warum löschst du Asi deinen ersten Beitrag?

    Man kann seinen Beitrag nicht löschen, scroll mal die Seite runter und guck rechts unten am Seitenende 😉



  • TocToc schrieb:

    Man kann seinen Beitrag nicht löschen, scroll mal die Seite runter und guck rechts unten am Seitenende 😉

    Du schreibst ja auch hochintelligente Beiträge... Er hat seinen QUELLCODE gelöscht, jetzt besser? Warum? Na damit der Lehrer ihn nicht hier im Forum findet...



  • [quote="Der echte Tim"]Und warum löschst du Asi deinen ersten Beitrag?[/quote]

    Weil ich keine LÖSUNGEN von aufgaben posten darf,und wenn ein Uni tutor nachprüft , könnte probleme für mich geben.

    Tut mir Leid .... du hättest mir sicher super geholfen ... 👎


  • Mod

    Wenn du die Fragen löscht, nachdem sie beantwortet wurden, machst du den Sinn eines Forums kaputt. Der Sinn ist nämlich nicht, deine persönliche Hausaufgabenhilfe zu sein, sondern dass später andere Leute die Threads auch noch lesen können. Ein Thread in dem die Fragen gelöscht werden ist völlig unbrauchbar und der Löscher der Frage verletzt somit das soziale Konstrukt des Forums. Der echte Tim benutzt daher die passenden Worte, um dieses Verhalten zu beschreiben.

    Einmal kann man das aus Unwissenheit tun. Aber mach das nicht noch einmal, sonst wird dir niemand mehr helfen.


Anmelden zum Antworten