std::memset

来自cppreference.com
< cpp‎ | string‎ | byte
定义于头文件 <cstring>
void* memset( void* dest, int ch, std::size_t count );

转换值 chunsigned char 并复制它到 dest 所指向对象的首 count 个字节。若该对象非可平凡复制(如标量、数组或 C 兼容的结构体),则行为未定义。若 count 大于 dest 所指向的对象大小,则行为未定义。

目录

[编辑] 参数

dest - 指向要填充的对象的指针
ch - 填充字节
count - 要填充的字节数

[编辑] 返回值

dest

[编辑] 注意

std::memset 所修改的对象在其生存期的剩余部分不再被访问,则此函数可以被优化掉(在如同规则下)(例如 gcc 漏洞 8537 )。为此,此函数不能用于擦洗内存(例如以令填充存储密码的数组)。该问题的解决方案包含 C11 memset_s 、 FreeBSD explicit_bzero 或 Microsoft SecureZeroMemory

[编辑] 示例

#include <iostream>
#include <cstring>
 
int main()
{
    int a[20];
    std::memset(a, 0, sizeof a);
    for (int ai : a) std::cout << ai;
}

输出:

00000000000000000000

[编辑] 参阅

复制一个缓冲区到另一个
(函数) [编辑]
移动一个缓冲区到另一个
(函数) [编辑]
复制给定宽字符到宽字符数组的每个位置
(函数) [编辑]
将一个值赋给一个范围内的元素
(函数模板) [编辑]
将一个值赋给一定数目的元素
(函数模板) [编辑]
检查类型是否可平凡复制
(类模板) [编辑]
memsetC 文档