C++ Befehle

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

C++ Befehle

Beitrag 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
Zuletzt geändert von Laurin am 23.08.2005 19:11, insgesamt 1-mal geändert.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag 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
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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:
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Du kannst memset praktisch mit AllocateMemory übersetzen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag 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.
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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_()
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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);
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ich hab mich doch verbessert, was willst du mehr Sunny?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

PMV hat geschrieben:Sunny hat deinen Post doch garnicht gesehen :wink:
achso, ok... :roll: :oops:
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten