std::memset
来自cppreference.com
定义于头文件 <cstring>
|
||
void* memset( void* dest, int ch, std::size_t count ); |
||
转换值 ch
为 unsigned 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
[编辑] 参阅
复制一个缓冲区到另一个 (函数) | |
移动一个缓冲区到另一个 (函数) | |
复制给定宽字符到宽字符数组的每个位置 (函数) | |
将一个值赋给一个范围内的元素 (函数模板) | |
将一个值赋给一定数目的元素 (函数模板) | |
(C++11) |
检查类型是否可平凡复制 (类模板) |
memset 的 C 文档
|