﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-季浩的C/C++博客-随笔分类-心得体会</title><link>http://www.cppblog.com/jht/category/1731.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 05 Sep 2008 20:12:51 GMT</lastBuildDate><pubDate>Fri, 05 Sep 2008 20:12:51 GMT</pubDate><ttl>60</ttl><item><title>用snprintf 替换 sprintf </title><link>http://www.cppblog.com/jht/archive/2008/09/03/60805.html</link><dc:creator>季浩</dc:creator><author>季浩</author><pubDate>Wed, 03 Sep 2008 05:43:00 GMT</pubDate><guid>http://www.cppblog.com/jht/archive/2008/09/03/60805.html</guid><wfw:comment>http://www.cppblog.com/jht/comments/60805.html</wfw:comment><comments>http://www.cppblog.com/jht/archive/2008/09/03/60805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jht/comments/commentRss/60805.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jht/services/trackbacks/60805.html</trackback:ping><description><![CDATA[
		<p style="MARGIN: 0cm 0cm 0pt">
				<span>
						<font face="Times New Roman">int snprintf(char *restrict buf, size_t n, const char * restrict<span>  </span>format, ...);</font>
				</span>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt">
				<span>函数说明:最多从源串中拷贝</span>
				<span>
						<font face="Times New Roman">n</font>
				</span>
				<span>－</span>
				<span>
						<font face="Times New Roman">1</font>
				</span>
				<span>个字符到目标串中，然后再在后面加一个</span>
				<span>
						<font face="Times New Roman">0</font>
				</span>
				<span>。所以如果目标串的大小为</span>
				<span>
						<font face="Times New Roman">n</font>
				</span>
				<span>
				</span>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt">
				<span>                 的话，将不会溢出。</span>
		</p>
		<p style="MARGIN: 0cm 0cm 0pt">
				<span>函数返回值:若成功则返回欲写入的字符串长度，若出错则返回负值。<br /><br />Note:<br />   gcc下安全, VC下仍要注意<br /><br />References:<br /><a href="http://blog.csdn.net/fibbery/archive/2007/11/13/1881587.aspx">平台间函数差异与系统移植：snprintf/_snprintf</a><br /><a class="singleposttitle" id="viewpost1_TitleUrl" href="/sandy/archive/2006/09/29/13133.html">谈谈snprintf</a><br /><a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/Macros/articles/797378.html">strncpy, strncat和snprintf的区别</a></span>
		</p>
<img src ="http://www.cppblog.com/jht/aggbug/60805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jht/" target="_blank">季浩</a> 2008-09-03 13:43 <a href="http://www.cppblog.com/jht/archive/2008/09/03/60805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>前天一道我不能回答好的面试题:内存泄露你怎么解决？希望大家不吝赐教</title><link>http://www.cppblog.com/jht/archive/2006/05/13/7048.html</link><dc:creator>季浩</dc:creator><author>季浩</author><pubDate>Fri, 12 May 2006 18:42:00 GMT</pubDate><guid>http://www.cppblog.com/jht/archive/2006/05/13/7048.html</guid><wfw:comment>http://www.cppblog.com/jht/comments/7048.html</wfw:comment><comments>http://www.cppblog.com/jht/archive/2006/05/13/7048.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/jht/comments/commentRss/7048.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jht/services/trackbacks/7048.html</trackback:ping><description><![CDATA[        题目描述很简单：内存泄露了，现象是看到该程序的内存占用率不断增长，作为一个程序员你怎么解决这个问题？<br /><br />        我答的不好，回来之后又好好的想了想，其实回答这个问题应该从不同的方面来考虑<br /><br />        首先分析内存泄露容易发生的情况，《OOP启示录》对这些情况都讲得挺详细的，在类的构造函数与析构函数中没有匹配地调用 new/delete！没有正确地清除嵌套的对象指针！在释放对象数组时，没有使用delete []；指向由指向对象的指针构成的数组不等同于与对象数组。缺少拷贝构造函数，编译器缺省添加的拷贝构造函数不足，缺省的拷贝构造函数采用位拷贝！......用我自己的想法描述就是，每次自己分配一块内存区域的时候，都要想到用完之后要将该内存区释放掉！当然特殊的情形这句话不适用。<br />       既然知道了内存泄露事件的多发地带，我们可以多在这些地方设置检察机制，相对来说就有一点针对性了！面试官说这样是一种解决办法，可能10000个函数，我们可以把错误范围缩小到200个，然后你还有什么办法继续解决这个问题？<br /><br />      我基本上是把我暂时能想到的都说了，什么设置断点调试啊，用IDE工具看地址变化。。。不过好像都不能达到面试官满意度。。。<br />      他说没有这样的IDE工具给你用，接着你怎么解决？<br />      唉。。。受打击了，事实如此，我对这个不够理解。。。<br /><br />     之后上网想找找内存泄露相关的资料，搜出来的文章大部分都是林锐高质量C++编程里关于内存的那篇，大感失望，怎么就没有其他更好更深入的文章了呢？？？<br /><br />     大家讨论讨论，我相信这个问题挺具有代表性的，大家讨论出个结果，都弄懂了岂不是更好？<br /><br /><br /><img src ="http://www.cppblog.com/jht/aggbug/7048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jht/" target="_blank">季浩</a> 2006-05-13 02:42 <a href="http://www.cppblog.com/jht/archive/2006/05/13/7048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>