C++ -- memcpy_s 与 memcpy

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就会弹出一个对话框提醒我们。

原文地址:https://www.cnblogs.com/zzzsj/p/14251401.html