Ihre ersten beiden Parameterwerte von memcpy()
nach hinten sind. Der erste Parameter von memcpy()
ist das Ziel, der zweite Parameter ist die Quelle. Sie versuchen, einen lokalen (nicht initialisierten) Puffer in den Speicher eines Zeichenfolgenliterals zu kopieren. Ein String-Literal wird im Nur-Lese-Speicher gespeichert, weshalb Sie einen Laufzeitfehler erhalten.
Auch Ihre Verwendung ein sizeof()
ist falsch, auch. psz
wird als Zeiger deklariert. Die Größe eines Zeigers beträgt bei einem 32-Bit-System 4 Byte und bei einem 64-Bit-System 8 Byte. Wenn Sie Ihre Pufferparameter umkehren, würden Sie auf einem 32-Bit-System kopieren, und auf einem 64-Bit-System würden Sie Hello wo
kopieren.
Ich vermute, Sie soll die folgende stattdessen tun:
memcpy(dst, psz, strlen(psz)+1);
Oder vielleicht:
char psz[] = "Hello world!";
char dst[1024];
memcpy(dst, psz, sizeof(psz));
Welche Fehler actually' –
Sie nicht kopieren können den Speicher statisch zugeordnet. –
Es wird kein Fehler ausgegeben, es heißt nur Unhandled Ausnahme bei 0x0F980E9A (msvcr110d.dll) ' –