【发布时间】:2018-12-28 08:25:41
【问题描述】:
我编写了一个函数来将一个宽字符数组传递给另一个函数。运行分析报告后,我收到以下错误
Overrunning array "array" of 12 bytes by passing it to a function which accesses it at byte offset 130.
我的逻辑:
static char array[6];
function1()
{
(void) memset(&array, 0, sizeof(array));
(void)swprintf(array, 6,get_wide_char((void *)"%0d"), 40);
function2(array);
}
function2(char* value)
{
}
这里 char 的大小是 1 字节,数组大小是 6 。我的第一个问题是它如何占用 12 字节的溢出数组“数组”?这个问题的任何解决方案。或者我在这里缺少什么?有什么建议吗?
【问题讨论】:
-
两个注意事项:请指定的编程语言并清理代码,例如避免使用宏并解析别名以使其清晰。哦,还要避免强制转换并打开编译器警告!
-
什么是
get_wide_char?如果打开警告,您将看到: 1. 您应该在函数上添加显式返回类型 2. 您缺少function2的前向声明。 3. 您将不兼容的指针类型传递给swprintf。