realloc für double und gleichzeitig mit 0.0 füllen?



  • Hallo gibt es eine möglichkeit ein array
    zu realloziieren und gleichzeitig mit nullen zu füllen? Auch für double arrays?

    Ich kann nichts brauchbares finden?

    Danke



  • Nö, gibt's nicht. Musst selber bauen, was aber trivial sein sollte.



  • TactX schrieb:

    was aber trivial sein sollte.

    so einfach isses nicht. realloc verrät ja nicht die alte grösse des blocks...



  • Ja, muss ich halt ein paar 0.0 nochmal 0.0en, oder was meinst du?



  • TactX schrieb:

    oder was meinst du?

    man kann keine 'void *recalloc (void *p, size_t size)' funktion schreiben und den zusätzlichen bereich löschen ohne den alten zu überschreiben. müsste irgendwie sowas wie 'void *recalloc (void *p, size_t old, size_t new)' sein oder so...

    void *recalloc (void *p, size_t old, size_t new)
    {
       assert (old < new);
       p = realloc (p, new);
       if (!p)
         return 0;
       memset (p+old, 0, new-old);
       return p;  
    }
    

    (nicht getestet)

    aber vielleicht geht's ja einfacher...



  • net schrieb:

    ... müsste irgendwie sowas wie 'void *recalloc (void *p, size_t old, size_t new)' sein oder so...

    Das meinte ich eigentlich mit trivial 😉

    <pedantic> Fließkomma mit memset plätten ist nicht ultraportabel 😉 </pedantic>


Anmelden zum Antworten