c - memcpy 使用指针抛出访问冲突

标签 c

<分区>

我有一个关于 memcopy 的非常简单的 c 问题,我已经能够修复但不明白为什么。以下代码在运行时因“访问冲突”而崩溃:

char *src = "HELLO WORLD!";
char * dest = "hello world!";
memcpy(dest, src, strlen(src)+1);

dest 似乎足够大,据我所知,memcpy 应该只是盲目地复制字节,所以我不明白这个问题。

将 dest 更改为数组,例如 char dest[13]; 可以解决问题,因此要求 dest 必须是未初始化的内存并创建数组会为您完成此操作,而指针声明不会?

干杯

最佳答案

当你这样做时:

char *dest = "hello world!";

"hello world!" 保存在内存的只读部分,名为 dest 的指针指向它,使得对该内存的任何写操作都是非法的.因此,如果您尝试将其用作 memcpy 中的目标;这是访问冲突。

你应该使用:

char dest[] = "hello world!";

关于c - memcpy 使用指针抛出访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22426329/

相关文章:

c++ - 使用 scanf_s 获取字符串值的问题

c - 使用 OpenSSL C API 读取 PEM 格式的 RSA key 文件

c - 如何在Linux中查找执行文件?

python - 多次串行写入后Arduino串行超时

IO 实用程序 writel 和 readl 可以用于物理地址吗

c - 系统调用返回值和errno

c - 删除字符串末尾的空终止符

C - 使用 -Wall 编译不会警告未初始化的变量

c - 有没有办法使用fork和exec在c程序中连续实现两个管道?

c - 有什么办法可以限制在 switch 语句中可以作为 case 的值吗?