memset() ungewöhnliches verhalten
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
aber mein Buff-Array ist ein Array aus zeigern
unsigned char** Buff; Buff = new unsigned char*[10]; //order irgendwas anderes sizeof(Buff); //ergebnis ist 4
in diesem falle muss ich wohl die größe des array berechenn, oder gibt es noch einen anderen weg ?
sry akari, im ersten moment hatt ich gedacht das hätte irgendwas mit Borland zu tun XD
-
Ceos schrieb:
in diesem falle muss ich wohl die größe des array berechenn, oder gibt es noch einen anderen weg ?
du musst dir die grösse des speichers irgendwo merken. ist leider so bei dynamisch angelegten arrays.
btw: new gibt's nicht in C, das gibt's in Java oder so. in C musste 'malloc' nehmen.
-
Er wurde ja aus einem C++-Unterforum verschoben
Zum Thema: Grundsätzlich wurde ich für Null-Initialisierung garkein memset (ausser in Verbindung mit malloc) mehr nehmen.
unsigned char* buffer[MYVAL] = {}; unsigned char** buffer = new char*[MYVAL] (); // nur eben für malloc nicht :D
-
LordJaxom schrieb:
Zum Thema: Grundsätzlich wurde ich für Null-Initialisierung garkein memset (ausser in Verbindung mit malloc) mehr nehmen.
mit 0 geht's ja noch, aber ein int-array auf lauter gleiche int-werte ungleich 0 zu setzen, geht nicht.
-
Ceos schrieb:
was issn wenn ich Buff dynamisch erzeugt habe ?
Buff = new unsigned char*[irgendwas];
würde sizeof() dann auch den richtigen wert finden ?
natürlich nicht, denn sizeof gibt dir nur Zurück, wie viel Platz eine Variable benötigt. Ein Zeiger als Varaible benötig immer 4 Bytes (bei i386 Rechnern), deswegen ist sizeof(int*) == sizeof(char*) == sizeof(beliebiger Pointer). Wenn du du dynamisch Speicher reservierst, bekommst du nur den Zeiger darauf, ein sizeof liefert dir dann nur wie viel Speicher der Zeiger verbraucht und nicht wie viel verbraucht, worauf der Zeiger zeigt.
-
supertux schrieb:
...Ein Zeiger als Varaible benötig immer 4 Bytes (bei i386 Rechnern), deswegen ist sizeof(int*) == sizeof(char*) == sizeof(beliebiger Pointer).
so einfach kannstes dir aber nicht machen
-
Undertaker schrieb:
supertux schrieb:
...Ein Zeiger als Varaible benötig immer 4 Bytes (bei i386 Rechnern), deswegen ist sizeof(int*) == sizeof(char*) == sizeof(beliebiger Pointer).
so einfach kannstes dir aber nicht machen
und was würdest du dazu ergänzen? Oder was ist denn falsch/unvollständig an meiner Aussage?
-
supertux schrieb:
Undertaker schrieb:
supertux schrieb:
...Ein Zeiger als Varaible benötig immer 4 Bytes (bei i386 Rechnern), deswegen ist sizeof(int*) == sizeof(char*) == sizeof(beliebiger Pointer).
so einfach kannstes dir aber nicht machen
und was würdest du dazu ergänzen? Oder was ist denn falsch/unvollständig an meiner Aussage?
denk' mal an den bei x86'ern sogenannten 'real-mode'.
-
danke aber so viele informationen wollt ich garnich
XD iss gut nu, passt scho, war halt nur n gedanke und meine frage zielte darauf hinaus, ob es nen C++ äquivalent zu sizeof() gibt, iss nich wirklich wichtig hätts nur gern gewusst.