new fliegt mir um die Ohren
-
Du kannst nicht einfach von Adresse 0 kopieren.
-
Und noch was Komisches:
Mit ZeroMemory() treten garkeine Probleme auf!
WTF ?!
-
non~fricky schrieb:
Du kannst nicht einfach von Adresse 0 kopieren.
Hä?
-
Dein memcpy() versucht Daten von Adresse 0 nach data zu kopieren. Adresse 0 "gehört" dir nicht, also gibt es eine Access Violation. Was du eigentlich machen möchtest ist ein memset().
-
memcpy kopiert daten von einem teil des speichers in den anderen. das ziel ist dabei der erste zeiger, die quelle der zweite. in deinem beispiel übergibst du "0" als quelle, d.h. memcpy versuchst, von stelle "0x00000000" daten zu kopieren. dafür muss es den zeiger dorthin dereferenzieren und das dereferenzieren eines null-zeigers ist undefiniert.
wenn du einen speicherbereich mit nullen füllen willst, dann verwende
std::fillbzw.std::fill_n.
-
Oh ... my ... god ...
memcpy != memset

SORRY BIN ERST AUFGESTANDEN
THX
-
In C++ benutzt du statt
char-Arrays besserstd::stringund statt C-Speicherfrickeleienstd::fill(),std::copy()und Co.
-
btw: std::fill wäre die C++-variante des memset

-
Jo schon klar doch muss ich auf Performance achten, es geht um IPC und viele, viele Daten...
-
pumuckl schrieb:
btw: std::fill wäre die C++-variante des memset

Stimmt, wurde ja auch erst zwei Mal erwähnt. :p
Anfänger04@THX schrieb:
Jo schon klar doch muss ich auf Performance achten, es geht um IPC und viele, viele Daten...
Okay. Und wie kommst du auf die Idee,
memset()wäre performanter? Hast du das mit einem Profiler überprüft? Falls nicht, hüte dich vor vorschnellen Annahmen.
-
Anfänger04@THX schrieb:
Jo schon klar doch muss ich auf Performance achten, es geht um IPC und viele, viele Daten...
Ja, es ist ein beliebter Anfängerfehler zu meinen, man müsste auf Performance achten und dann die falschen Sachen "optimieren".
-
Öh ich meinte die Verwendung von std::string.
Bei ein paar hunderttausend mal 128 Bytes pro Sekunde nehme ich lieber ein unsigned char Array, zuliebe der Nutzer.
-
Anfänger04@SRY schrieb:
Öh ich meinte die Verwendung von std::string.
Bei ein paar hunderttausend mal 128 Bytes pro Sekunde nehme ich lieber ein unsigned char Array, zuliebe der Nutzer.Und woher weißt du, dass das langsam ist? Schon mal gemessen? Macht dein Programm fertig und versuche dabei den Code so schön wie möglich zu machen, ohne an Codeoptimierung zu denken, das kann der Compiler sowieso viel besser wie du. Nimm std::vector statt C-Arrays, da gibt es keinen messbaren Zeitunterschied.
-
als du