memcpy_s():
memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
memcpy_s的四個參數命名其實是有迷惑性的,個人的理解是,dest-目標地址,numberOfElenments-目標地址的字符個數(可使用sizeof獲取),src-源地址,count-需要拷貝的源字符個數(可使用sizeof獲取)。
strcpy_s、memcpy_s等具有緩沖區大小檢查的函數,可以有效的檢測內存溢出,找到出錯的代碼。但是strcpy、memcpy這樣的出錯了需要自己扒代碼。
如:
int dest[10], src[100];
memcpy(dest, src, 20 * sizeof (int));
memcpy_s(dest, sizeof(dest), src, 20 * sizeof (int));
memcpy會訪問越界,破壞了dest后面的數據,並且可能我們還不知道。而memcpy_s就會彈出一個對話框提醒我們。