strcpy_s、memcpy_s等具有緩衝區大小檢查的函數,可以有效的檢測內存溢出,找到出錯的代碼。但是strcpy、memcpy這樣的出錯了需要自己扒代碼。
下面是兩者使用的一個例子:
char szTmp[30] = { 0 };
int nd = sizeof szTmp;
memcpy_s(szTmp, sizeof szTmp, szBuf, sizeof szTmp);
memcpy(szTmp, szBuf + n, sizeof szTmp);
memcpy_s的函數原型如下
errno_t memcpy_s(
void *dest,
size_t numberOfElements,
const void *src,
size_t count
);
其中每個參數的含義如下:
dest:目標的地址
numberOfElements:目標的size
src:源地址
count:要拷貝的字節數