memset() 函数详解
用途:
memset() 函数用于填充一个内存块的指定字节数。
语法:
<code class="c">void *memset(void *ptr, int value, size_t num);</code>
参数:
立即学习“C语言免费学习笔记(深入)”;
ptr:指向要填充内存块的指针。 value:要填充的字节值。 num:要填充的字节数。返回值:
memset() 返回指向已填充内存块的指针(即 ptr)。
工作原理:
memset() 函数通过使用循环来逐个字节地填充指定的内存块。它将每个字节都设置为 value 参数指定的值。
示例:
<code class="c">// 将一个 10 个字节的数组填充为 0 char arr[10]; memset(arr, 0, sizeof(arr)); // 将一个字符串填充为 'a' char str[] = "Hello"; memset(str, 'a', 5); // 填充前 5 个字符为 'a'</code>
注意事项:
memset() 不会检查 ptr 指向的位置是否有效,因此在使用前必须确保它指向一个有效的内存地址。 如果 num 为 0,则什么也不会填充。 如果 num 超过内存块的大小,则函数将超过内存块的边界,这可能会导致未定义的行为。替代方案:
memset() 函数的替代方案包括:
malloc() 和 free():分配和释放内存块,并手动填充字节。 std::fill():C++ 中的函数,用于填充容器或数组。