001
13.05.2004, 09:45 Uhr
virtual
Sexiest Bit alive (Operator)
|
Also erstmal ist der Code nicht portabel, was dir wahrscheinlich auch klar ist, weil ein unsigned nicht zwingend 4 Byte hat, sondern mehr order weniger haben kann. Dh ein ansatz mit sizeof(unsigned) bzw. std::numeric_limits wäre vielversprechender. Ausserdem ist die Ausrichtung von from und to auf 4 Bytegrenzen auch nicht der Weisheit leztzter schluss, weil 1. Kann der Performance Nachteil bei 64 Bit sytemen (zB: Tru64) gewaltig sein, wenn es nicht gleichzeitig eine 8-Byte grenze ist 2. Die Funktion nur sehr begrenzt einsetzbar wäre. Denn nimmt man mal eine Funktion, die irgendwelche Bytegrenzen voraussetzt, dann wären solche Sachen wohl nicht sinnvoll umsetzbar:
C++: |
const char* ptr = "Hallo, Welt"; // ptr wird in der Regel auf einen Speicherbereich an einer 4 oder 8 Bytegrenze liegen, jedenfalls bei Optimierenden Compiler. const char* p1 = strchr(ptr, ','); // p1 == ptr+5, also vermutlich keine 4 Bytegrenze char buffer[4711]; memcpy(buffer, p1, min(strlen(p1)+1, sizeof(buffer))); // Hm...
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 13.05.2004 um 09:46 Uhr von virtual editiert. |