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 ? :wink:

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 ? :wink:
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 :allright:

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.
:shock:
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.
:shock:
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:

Code: Alles auswählen

RtlFillMemory_()

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:

Code: Alles auswählen

memset( pointer, byte, laenge);
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 :wink: ...
War halt zu langsam oder du zu schnell ...

Will also garnix, aber Aufschlussreich fand ichs trotzdem :D

MFG PMV

Verfasst: 22.08.2005 15:45
von DarkDragon
PMV hat geschrieben:Sunny hat deinen Post doch garnicht gesehen :wink:
achso, ok... :roll: :oops: