| |
    今天程序出了一个core,是strcmp的时候有一个参数没有判断为NULL导致的,当我编写了一个小程序:

引用
#include
int main()
{
strcmp(NULL, "“);
return 1;
}

测试的时候发现程序跑的毫无问题。
编译参数是gcc -g -O0,没有开任何优化。

gdb进去后发现strcmp根本没有被执行,改成int a = strcmp(NULL, "");后,出core了。

看来编译器默认还是提供一定优化的。

另外需要注意strcmp不会检查参数(效率考虑),所以需要自己检查。
by snooda | 分类: c程序设计 | 评论(0) | 引用(0) | 阅读(2085)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]