004
06.04.2003, 10:12 Uhr
virtual
Sexiest Bit alive (Operator)
|
@sxs Dies Behauptung einfach so in den Raum zu stellen, finde ich schon ziemlich gewagt. Ich kann SIe auch nicht nachvollziehen (und das, obwohl ich viel mit Sun Solaris zu tun habe) . Sicherlich sind zwei wesentliche Dinge zu beachten: 1. realloc ist für C, nicht C++ gedacht. 2. realloc will korrekt angewendet werden.
Ich denke, der häufigste Fehler in Verbindung mir realloc, der ganz gerne von Anfändern gemacht wird, ist, wenn man buffer vergrößern möchte, sowas zu schreiben:
C++: |
buffer = realloc(buffer, new_size);
|
Dies führt insbes. dann, wenn realloc NULL zurückgibt, zu Speicherlöchern, natürlich auch zu Abstürzen, wenn man den Rückgabewert von realloc nicht prüft, bevor man damit arbeitet. Das ist aber kein realloc, sondern ein Programmierer Problem. Richtiger wäre:
C++: |
temp =realoc(buffer, new_size); if (NULL == temp) { /* Fehlerbehandlung, ggf. mit buffer weiterarbeiten */ } else { buffer = temp; }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |