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就會彈出一個對話框提醒我們。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM