使用 memcpy 的 dest 对象中的缓冲区溢出的编译器警告/错误

标签 c

当使用 memcopy 将数据从 const 字符串复制到数组 -(-> 这是结构体的成员)时,编译器会因目标对象中的缓冲区溢出而抛出错误

感谢您的学习。

#define LEN 9
typedef struct buff_ {
....
..
char bowl[LEN];
}buff;
buff *dest= NULL;
dest= malloc......();// This is allocated properly
'
'
'
memcpy(dest->bowl,"y",LEN); //compiler throwing error here:buffer overflow


当我将字符串复制到 LEN 大于 src 的缓冲区(dest)时,不应该出现任何错误。

最佳答案

尝试使用,这将限制为 LEN 或字符串的实际长度,以较小者为准:

strncpy(dest->bowl,"y",LEN);

关于使用 memcpy 的 dest 对象中的缓冲区溢出的编译器警告/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638577/

相关文章:

c++ - 当 * 作为参数之一传递时 argc 的值在 c 中调用程序

c - 从设备包含的文件中的 st_dev 字段查找设备文件

c - 这个功能如何运作? (二叉搜索树递归)

c - 如何在不使用 malloc() 的情况下创建子字符串

c - 编写可以从命令行使用附加参数运行的 C 程序

c++ - 宏 C 中的字符串连接

c - 父子进程使用信号同步

c - 可变参数函数传递很长但读取为 va_arg(argList, int)

c++ - 公私钥加密教程

在c中将字符串转换为整数数组