Frage zu "memcpy" und "memcpy_s"

vfl_freak

Premium-User
[EDIT]
Hat sich erledigt - hatte einen Gedankenfehler drin ......
[/EDIT]

Guten morgen,

ich habe mal ein (vielleicht ganz dumme) Fragew, da ich irgendwie gerade auf dem Schlauch stehe (ist wohl noch zu früh) :rolleyes:

In einem älteren Projekt (das derzeit von VS6 auf VS2010 umgestellt wird) werden an div. Stellen KeyBuffer-Variablen gefüllt, die später für die KeyInfo unser "Datenbank" (BTrieve .....) verwendet werden.
In einem Fall wird der KeyBuffer wie folgt gefüllt:
C++:
// req_databuf ist das Byte-Array, das von Client übertragen wird (ist hier korrekt gefüllt - per Debugger geprüft
...
BYTE cKeyBuffer[10]; // die Keybuffer-Variable
cKeyBuffer[0] = req_databuf[35];
memcpy( &cKeyBuffer[1], &req_databuf[37], 8 );
cKeyBuffer[9] = req_databuf[36];

Nun habe ich das memcpy auf memcpy_s umgestellt:
C++:
memcpy_s( &cKeyBuf[1], sizeof cKeyBuf, &req_databuf[37], 8 );
Ok, das lässt so compilieren und hat bei div. Tests auch funktiuniert :-)

Meine Frage nun: muss hier wirklich die Zielbuffer-Länge "10" angeben, obwohl doch nur 8 Byte kopiert werden sollen?
Kann sowas zu Problemen führen :confuses:

BTW: warum meckert eigentlich der Compiler diese Stellen "memcpy" nicht an, so wie es im Dutzend bei "sprintf" macht, wo "sprintf_s" gefordert wird?

Danke und Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Zurück