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>