memcpy_s demo
时间: 2024-09-27 17:05:23 浏览: 34
`memcpy_s` 是 C 标准库中的一个安全版内存复制函数,它用于从源地址复制指定大小的数据到目标地址,其目的是防止缓冲区溢出。相比于普通的 `memcpy` 函数,`memcpy_s` 包含了对目标区域边界的检查以及错误处理。
下面是一个简单的 `memcpy_s` 示例:
```c
#include <string.h>
#include <stdio.h>
void safe_copy(char *dest, const char *src, size_t num_bytes) {
// 使用 memcpy_s 替换 memcpy,指定目标和源指针,以及要复制的字节数
if (memcpy_s(dest, sizeof(dest), src, num_bytes) != num_bytes) {
printf("Memory copy failed due to buffer overrun or other error.\n");
}
}
int main() {
char source[] = "Hello, world!";
char destination[16]; // 指定足够大的空间
// 调用 safe_copy 并传入目标、源和字节数
safe_copy(destination, source, sizeof(source) - 1); // 注意减一,因为字符串结束符 '\0'
destination[sizeof(source)] = '\0'; // 确保目标字符串结束
printf("Copied string: %s\n", destination);
return 0;
}
```
在这个例子中,如果 `source` 字符数组完全复制到 `destination` 中而不会发生溢出,程序会正常显示复制的结果。如果复制过程中发生溢出或其他错误,程序会打印错误信息。
阅读全文