void* p = new void;
-
Du musst den Pointer nur casten dann kann man ihn für alles verwenden:
template <class T> void* my_allocate(unsigned int const& number) { return new T[number]; } void my_delete(void* pointer) { delete [] pointer; } int main() { int* p = static_cast<int*>(my_allocate<int>(5)); /* tu dies, und das... */ my_delete(p); return 0; }
Achja, nicht das ich behaupten würde dass mein Beispiel einen tieferen Sinn hat...
-
Wieso übergibts du number per reference?
MfG SideWinder
-
das_brot schrieb:
//ok, geht nur in die hose wenn du sowas machst: void *p; *p = new int;//ungültige speicheradresse
Was ist denn das für ein unsinn?
-
fehlt ein entscheidendes casting *shame on me*
aber der gute wille ist erkennbar
-
Mit "Unsinn" meinte ich das hier:
*p=...
Du dereferenzierst einen void-Pointer und willst ihm dann die Adresse eines ints zuweisen...
-
dEUs schrieb:
das_brot schrieb:
//ok, geht nur in die hose wenn du sowas machst: void *p; *p = new int;//ungültige speicheradresse
Was ist denn das für ein unsinn?
Mit nem cast geht es sogar^^ (auf jeden Fall auf 32Bit, bei anderem kenn ich mich net so aus wie da die Adressierung aussieht)
/edit: Ich meinte man kann damit Pointer zu normalen Variablen casten, hier gehts natürlich nich weil p auch auf nichts zeigt dessen Inhalt verändert werden könnte.SideWinder schrieb:
Wieso übergibts du number per reference?
MfG SideWinder
Hmm aus Spass an der Freude? Damit ich keine lokale Variable brauche in meiner sinnlosen Funktion die sowieso vom Compiller optimiert wird und besser als inline definiert werden sollte?
*gähn* irgendwie bin ich müde...
-
zwecks rehabilitation:
void *p; p = new int; *(int*)p = 200; printf("int @ %d: %d",p,*(int*)p);
-
schon besser
-
f*** du bist schnell
-
und du erst :p
Hab halt nix anderes zu tun.
Außer meine mündliche Prüfung vorzubereiten...