<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Snooda]]></title> 
<link>http://www.snooda.com/index</link> 
<description><![CDATA[Snooda's Blog]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Snooda]]></copyright>
<item>
<link>http://www.snooda.com/read/</link>
<title><![CDATA[由strcm参数为NULL看编译器优化]]></title> 
<author>snooda &lt;admin@snooda.com&gt;</author>
<category><![CDATA[c程序设计]]></category>
<pubDate>Tue, 14 Feb 2012 10:29:49 +0000</pubDate> 
<guid>http://www.snooda.com/read/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;今天程序出了一个core，是strcmp的时候有一个参数没有判断为NULL导致的，当我编写了一个小程序：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">#include <stdio.h> <br/>int main() <br/>&#123; <br/>strcmp(NULL, "“); <br/>return 1; <br/>&#125;</div></div><br/>测试的时候发现程序跑的毫无问题。<br/>编译参数是gcc -g -O0，没有开任何优化。<br/><br/>gdb进去后发现strcmp根本没有被执行，改成int a = strcmp(NULL, "");后，出core了。<br/><br/>看来编译器默认还是提供一定优化的。<br/><br/>另外需要注意strcmp不会检查参数（效率考虑），所以需要自己检查。<br/>Tags - <a href="http://www.snooda.com/tags/strcmp/" rel="tag">strcmp</a> , <a href="http://www.snooda.com/tags/%25E7%25BC%2596%25E8%25AF%2591%25E5%2599%25A8%25E4%25BC%2598%25E5%258C%2596/" rel="tag">编译器优化</a>
]]>
</description>
</item><item>
<link>http://www.snooda.com/read/#blogcomment</link>
<title><![CDATA[[评论] 由strcm参数为NULL看编译器优化]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.snooda.com/read/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>