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:要拷贝的字节数