Pointer -> geht das so, oder habe ich einen Denkfehler

  • Hallo ihr "Codegurus" :)


    ich habe mal Frage zu Pointern, die ich in Bezug auf VDR in ein Plugin benutzen will (daher die Frage hier und nicht in einem reinen C Forum).


    Folgendes: Ich möchte eine Variable bzw. einen char Pointer mit Dateinamen füllen (so hintereinander weg ... kein Array ... fragt bitte nicht warum :)).
    Die Definition erfolgt in der Funktion "ReadFiles".
    Das Befüllen soll aber in zwei unterschiedlichen Funktionen geschehen.
    Folgendes habe ich gebastelt:

    Das scheint auch zu funktionieren. Da ich aber immer noch Schwierigkeiten mit Pointern habe, wollte ich Euch mal fragen, ob ich hier vielleicht irgendwas dummes zusammengesetzt habe, was u.u. nen schwerwiegenden Fehler verursachen kann.


    Danke schon mal.


    Bye
    Andreas

    MyVDR:
    HW: Core2Quad Q6600; 4GB; ca. 6TB HDD als RAID1 und LVM; 2xDVB-T USB von Terratec, 9400GT GK;
    SW: yavdr 0.2
    Von Anwendern für Anwender: otrs-forum.de

  • Hallo Andres,


    die Benutzung der Pointer sieht gut aus. Ich bin mir aber nicht sicher ob du da nicht eine Speicherloch programmierst. Ich glaube nicht (bin mir da aber nicht 100% sicher) das asprintf den Speicher frei gibt, den du übergibbst.
    Also der erste Aufruf von asprintf() legt Speicher an und gibt dir den Pointer darauf in files zurück. Jeder weitere wird neuen anlegen und der alte wird hier nicht frei gegeben.


    Code
    char *oldFiles = *files;
    if( oldFiles )
    {
      asprintf(files, "%s%s", oldFiles,s);
      free( oldFiles );
    }
    else
      asprintf(files, "%s", s);


    may the source be with you


    Dirk

  • Zitat

    Original von Darkside
    Folgendes: Ich möchte eine Variable bzw. einen char Pointer mit Dateinamen füllen (so hintereinander weg ... kein Array ... fragt bitte nicht warum :)).


    Ein Array ist ein Pointer ist ein Array ;)

    This is a .44 Magnum, the most powerful handgun in the world. It can take your head clean off. You've got to ask yourself one question, Do I feel lucky?
    easyvdr 0.9a2 - TT-DVB-S2-6400 - ASUS AT3IONT-I deluxe - Atom 330 - 1,5TB WD EADS - Denon 1910 - Toshiba 42X3030D - Harmony 700

  • Hallo,


    ich dachte, schon, das Problem ist soo doof, das jeder das lieber ignoriert da unterstes Nivau oder so :D


    dolphin
    Thx, daran habe ich nicht gedacht. Ich habe zwar den Code inwischen komplett umgestellt, aber der Tipp ist ja wichtig.


    Bye
    Andreas

    MyVDR:
    HW: Core2Quad Q6600; 4GB; ca. 6TB HDD als RAID1 und LVM; 2xDVB-T USB von Terratec, 9400GT GK;
    SW: yavdr 0.2
    Von Anwendern für Anwender: otrs-forum.de

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!