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

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,則返回一個非零值。

主站蜘蛛池模板: 蒙自县| 永福县| 中阳县| 红安县| 湘西| 永靖县| 星座| 广汉市| 白城市| 东乌珠穆沁旗| 美姑县| 南靖县| 清河县| 阿勒泰市| 玉门市| 韶山市| 普宁市| 托克逊县| 沭阳县| 轮台县| 孟津县| 海丰县| 和田市| 凤城市| 宣城市| 玉溪市| 阿克苏市| 长海县| 北安市| 大足县| 泾阳县| 阿尔山市| 平潭县| 资源县| 兴安县| 定日县| 舒兰市| 玉龙| 抚松县| 正镶白旗| 色达县|