Seite 1 von 3
C++ Befehle
Verfasst: 22.08.2005 02:57
von Laurin
Moin
Ich versuche gerade einen C++-Code nach PB zu portieren und hänge jetzt bei MemSet fest.
So wird es verwendet:
Code: Alles auswählen
GETVERSIONOUTPARAMS VersionParams;
memset((void*)&VersionParams, 0, sizeof(VersionParams));
GETVERSIONOUTPARAMS ist eine Structure, die offenbar auf
VersionParams übergeben wird (also sowas wie
VersionParams.GETVERSIONOUTPARAMS).
Weiß jemand, was MemSet macht? Google hat nicht wirklich geholfen. Es hat irgendwas mit Arrays zu tun.
Greetz Laurin
Verfasst: 22.08.2005 05:03
von MARTIN
memset -nichts gefunden ? bist du sicher dass du im Internet gesucht hast ? Oder war das ein anderes Google ?
Ok. memset wie der Name schon sagt initialisiert ein Speicherbereich mit einem Wert.
memset (void *adresse, int wert, size_t laenge)
void *adresse - ist die adresse des Speicherbereichs
int wert - wert mit dem d4er Speicher initialisiert werden soll, hier beachten nur der erste Byte von int wert ist relevant (int hat ja mindestens 2Bytes)
size_t laenge - wie viele Bytes beginnend ab adresse sollen initialisiert werden
http://www.cplusplus.com/ref/cstring/memset.html
Verfasst: 22.08.2005 13:35
von Laurin
Das bedeutet also, das
MemSet eine Variavle auf
size_t laenge vergrößert und mit
int wert füllt.
Schön.. so einfach.
memset -nichts gefunden ? bist du sicher dass du im Internet gesucht hast ? Oder war das ein anderes Google ?
Ich habe gesucht. Ich habe auch dieselbe Seite angezeigt bekommen wie die. Nur ich konnte damit nichts anfangen
Aber du hast es mir ja erklärt

Verfasst: 22.08.2005 13:37
von DarkDragon
Du kannst memset praktisch mit AllocateMemory übersetzen.
Verfasst: 22.08.2005 15:16
von Eric
DarkDragon hat geschrieben:Du kannst memset praktisch mit AllocateMemory übersetzen.
Ich dachte, dass memset einen Speicherbereich mit einem Bestimmten Wert überschreibt, aber nicht reserviert.
Verfasst: 22.08.2005 15:25
von DarkDragon
Eric hat geschrieben:DarkDragon hat geschrieben:Du kannst memset praktisch mit AllocateMemory übersetzen.
Ich dachte, dass memset einen Speicherbereich mit einem Bestimmten Wert überschreibt, aber nicht reserviert.
memset Fill buffer with specified character
Du hast recht, ich dachte da wohl an memloc oder wies heißt.
Dann kannst du es wohl damit übersetzen:
Verfasst: 22.08.2005 15:27
von Ynnus
DarkDragon hat geschrieben:Du kannst memset praktisch mit AllocateMemory übersetzen.
Nene, moment mal. Dafür gibts malloc oder calloc oder in C++ auch den new Operator. Aber memset füllt den angegebenen Speicherbereich mit dem angegebenen Byte in der angegebenen Länge aus. Ist nützlich um z.B. C-Strings beim Erstellen auf 0 zu setzen oder einen Speicher eben komplett wieder 0 zu setzen.
Wird afaik so genutzt:
praktisch:
Code: Alles auswählen
char* pointer = (char*) malloc(100);
memset( pointer, 0, 100);
Verfasst: 22.08.2005 15:31
von DarkDragon
Ich hab mich doch verbessert, was willst du mehr Sunny?
Verfasst: 22.08.2005 15:42
von PMV
Sunny hat deinen Post doch garnicht gesehen

...
War halt zu langsam oder du zu schnell ...
Will also garnix, aber Aufschlussreich fand ichs trotzdem
MFG PMV
Verfasst: 22.08.2005 15:45
von DarkDragon
PMV hat geschrieben:Sunny hat deinen Post doch garnicht gesehen
achso, ok...
