官术网_书友最值得收藏!

2.5.8 memcpy()和memmove()

C標準的memcpy()和memmove()函數很容易出錯,因為它們不允許調用者指定目標數組的大小。

C11附錄K邊界檢查接口。在C11附錄K中定義的memcpy_s()和memmove_s()函數,與相應的安全性較低的memcpy()和memmove()函數類似,但提供了一些額外的保障。為了防止緩沖區溢出,memcpy_s()和memmove_s()函數具有額外的參數來指定目標數組的大小。如果發生運行時約束違反,則目標數組被零填充,以增加問題的能見度。此外,為了減少出現未定義行為情況的數量,如果正在嘗試復制重疊的對象,memcpy_s()函數必須報告約束違反。

memcpy_s()和memmove_s()函數如果執行成功則返回0。如果源或目標指針為NULL,或者指定要復制/移動的字符數大于目標緩沖區的最大大小,或者如果要復制/移動的字符數或目標緩沖區的最大大小大于RSIZE_MAX,則返回一個非零值。

主站蜘蛛池模板: 玉田县| 宝坻区| 马边| 长兴县| 岱山县| 扎鲁特旗| 保靖县| 玉山县| 桑植县| 泗阳县| 化德县| 阿合奇县| 彰化市| 玉溪市| 兰考县| 洪泽县| 平利县| 蒙山县| 康定县| 深州市| 湘西| 北安市| 福贡县| 东乡县| 奇台县| 盖州市| 北流市| 麦盖提县| 孟州市| 米易县| 连云港市| 崇明县| 井冈山市| 托克托县| 湘乡市| 北票市| 嵊州市| 论坛| 苏尼特左旗| 武城县| 阿巴嘎旗|