【发布时间】:2013-06-02 18:29:02
【问题描述】:
这段代码:
char buff[255];
memcpy(buff,0,255);
编译器在编译过程中没有给出任何警告,但进程因分段错误而失败 但是当我编译下面的代码时
char buff[255];
memcpy(buff,2,255);
编译器给出以下警告
警告:传递 'memcpy' 的参数 2 使指针从整数不进行强制转换 [默认启用]
为什么编译器不对常量 0 给出警告 我正在使用 GCC 版本 4.7.2
还有一些编译器标志会对此类代码发出警告
【问题讨论】:
-
你对这段代码的意图是什么?因为您似乎正在尝试执行
memset(buff,0,255)或memset(buff,2,255) -
是的,这就是编写这段代码的人的意图。令人惊讶的是,代码在 2 年内没有失败并且对我来说失败了。所以我试图重现一个我没有得到 memcpy( 不成功) 段错误的情况。这导致了我发布的问题