Welcome to Snooda's Blog
由strcm参数为NULL看编译器优化
[
|
2012/02/14 18:29]


今天程序出了一个core,是strcmp的时候有一个参数没有判断为NULL导致的,当我编写了一个小程序:
测试的时候发现程序跑的毫无问题。
编译参数是gcc -g -O0,没有开任何优化。
gdb进去后发现strcmp根本没有被执行,改成int a = strcmp(NULL, "");后,出core了。
看来编译器默认还是提供一定优化的。
另外需要注意strcmp不会检查参数(效率考虑),所以需要自己检查。
引用
#include
int main()
{
strcmp(NULL, "“);
return 1;
}
int main()
{
strcmp(NULL, "“);
return 1;
}
测试的时候发现程序跑的毫无问题。
编译参数是gcc -g -O0,没有开任何优化。
gdb进去后发现strcmp根本没有被执行,改成int a = strcmp(NULL, "");后,出core了。
看来编译器默认还是提供一定优化的。
另外需要注意strcmp不会检查参数(效率考虑),所以需要自己检查。