struct member in einer Reihe im Speicher?
-
Hallo,
ich würde für mein aktuelles Projekt gerne die Eigenschaft benutzen, dass in C++ die Member von struct alle in nacheinander im Speicher stehen. Ich diese also mit memcpy(pointer, target, sizeof(structure)); kopieren kann. Ich will mich hier eigentlich nur nochmal versichern, dass das auch wirklich zum Standard gehört, damit ich später keine böse Überaschung erlebe.
Wenn struct und class identisch sein sollen in C++ heißt das, dass ich auch class benutzen kann und dann trotzdem noch alle Member in einer Reihe im Speicher stehen?
MfG
Scarabol
-
Scarabol schrieb:
memcpy(pointer, target, sizeof(structure));
Die Zieladdresse kommt bei memcpy zuerst. Wenn structure ein POD ist, dann darfst Du das so machen.
-
Ob das problemlos geht, hängt auch davon ab,
wozuundwohinDu kopieren willst.
-
Die stehen schon hintereinander. Beachte aber was "hintereinander" heißt:
#include <iostream> struct S{ int i; double d; }; int main() { S s[2]; std::cout << sizeof(int) << std::endl; std::cout << sizeof(double) << std::endl; std::cout << sizeof(S) << std::endl; std::cout << &s[0].i << std::endl; std::cout << &s[0].d << std::endl; std::cout << &s[1].i << std::endl; std::cout << &s[1].d << std::endl; return 0; }4 8 16 0012FF40 0012FF48 0012FF50 0012FF58