zoukankan      html  css  js  c++  java
  • 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就会弹出一个对话框提醒我们。

  • 相关阅读:
    mysql远程访问设置
    LUA Userdata
    LUA 面向对象
    LUA table中函数的调用
    LUA 元表
    LUA table
    hibernate3 和hibernate4的一点小变动
    java 关键字final
    MySQL oracle 分页
    Java后端开发书架
  • 原文地址:https://www.cnblogs.com/zzzsj/p/14251401.html
Copyright © 2011-2022 走看看