c++ Programmierung unter SUSE 9.2

Diskutiere c++ Programmierung unter SUSE 9.2 im Linux, BSD, Mac OS X & freie Betriebssysteme Forum im Bereich Software Fragen, Probleme, Support; Hi Leutz, ich bin mir nicht so recht sicher, ob dieser Thread hier hin passt, aber ich wüsste nicht so sonst. Eigentlich hat mein Problem ...



 
  1. c++ Programmierung unter SUSE 9.2 #1
    Fortgeschrittenes Mitglied Avatar von rayman

    Unglücklich c++ Programmierung unter SUSE 9.2

    Hi Leutz,
    ich bin mir nicht so recht sicher, ob dieser Thread hier hin passt, aber ich wüsste nicht so sonst.
    Eigentlich hat mein Problem nicht soviel mit Suse zu tun. Ich nutze das nur als Programmierumgebung.
    Also zu meinem Problem.

    Ich habe einen String :

    char * text;

    dieser wird dann nach "\n" durchsucht und getrennt :

    char*neu = strtok(text,"\n");
    while (neu!=NULL){
    zaehler ++;
    neu=strtok(NULL,"\n");
    }

    nach diesem Zähler wird ein Array erstellt.
    Dann wird der text an eine weitere Funktion übergeben, die im Prinzip das gleiche macht. Nur sucht sie in den mit Hilfe von strtok herausgefilterten Zeilen noch nach einzelnen Bestandteilen.
    das funktioniert alles wunderbar.
    Diese Funktion läuft auch durch, genau wie die oben beschriebene. Nur wenn die oben beschriebene zuende ist bekomme ich einen Speicherzugriffsfehler, obwohl ich garnicht mehr auf Speicher zugreiffe soweit ich weiss. Und dieser Fehler tritt nur auf wenn eine der Zeilen die herausgeschnitten werden länger als 216 Zeichen ist. Und das ist das Problem. Ich kann / darf die Zeilenlänge nicht beschränken. Und ich kann mir auch nicht erklären woher der Fehler kommt. Ich vermute dass er beim Beenden der Funktion den Text löschen will, was ja auch richtig ist, es aber nicht richtig hinbekommt. Ich weiss echt nicht mehr weiter. :-( Eigentlich entstehen Speicherzugriffsfehler ja nur wenn man auch tatsächlich auf nicht reservierten Speicher zugreift, sprich wenn man über ein definiertes Array hinausschreibt oder liest. Aber das ist hiier nicht der Fall.

    Ich hoffe ihr könnt mir helfen.

    Grütze
    Rayman

  2. Standard

    Hallo rayman,

    schau Dir mal Diesen Ratgeber. an. Dort wirst du bestimmt fündig.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. c++ Programmierung unter SUSE 9.2 #2
    Fortgeschrittenes Mitglied
    Threadstarter
    Avatar von rayman

    Standard

    Hi,
    also ich habe die Lösung gefunden. Es lag an einem Array das in der passenden Grösse angelegt wird.

    char *array = new char [strlen(text_der_reinsollte)];

    wenn ich da jetzt den entsprechenden text reinkopiere wir wohl noch ein /0 angehängt . Das ist solange kein Problem, wie das Array entgültig gelöscht wird (Am Ende jeder Funktion werden ja alle Variablen gelöscht, sofern sie nicht global definiert sind).
    Denn da wird dann zuweit gelesen. Also vergösserte ich das Array um einen Toleranzbereich :

    char *array = new char [strlen(text_der_reinsollte)+4];

    Damit war es dann kein Problem mehr.
    Jedoch ist damit die eigentliche Ursache noch nicht geklärt, bzw. das warum er zuweit liest und das array anscheinend doch nicht richtig passt. Naja egal. Hauptsache es läuft.

    Greetz Rayman


c++ Programmierung unter SUSE 9.2

Besucher kamen mit folgenden Begriffen auf die Seite:

Stichworte


Guides, Tipps und Mitspieler zu Citadel: Forged with Fire findest du auf Citadel Forum - Forged with Fire.
-
Trete der Nintendo Community bei und besuche das Nintendo Switch Forum.