﻿<?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++博客-Diego-随笔分类-技术</title><link>http://www.cppblog.com/diego/category/11049.html</link><description>carry on till tomorrow.
</description><language>zh-cn</language><lastBuildDate>Tue, 05 Jul 2011 07:38:15 GMT</lastBuildDate><pubDate>Tue, 05 Jul 2011 07:38:15 GMT</pubDate><ttl>60</ttl><item><title>vc使用_CrtSetDbgFlag 检测内存泄漏</title><link>http://www.cppblog.com/diego/archive/2011/07/03/150048.html</link><dc:creator>diego</dc:creator><author>diego</author><pubDate>Sun, 03 Jul 2011 06:32:00 GMT</pubDate><guid>http://www.cppblog.com/diego/archive/2011/07/03/150048.html</guid><wfw:comment>http://www.cppblog.com/diego/comments/150048.html</wfw:comment><comments>http://www.cppblog.com/diego/archive/2011/07/03/150048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/diego/comments/commentRss/150048.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/diego/services/trackbacks/150048.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">on_ff&nbsp;为true&nbsp;打印内存泄漏,&nbsp;为false则不打印</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;detect_memory_leaks(&nbsp;</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;on_off&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;flags&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">on_off)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;</span><span style="color: #000000; ">&amp;=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">~</span><span style="color: #000000; ">_CRTDBG_LEAK_CHECK_DF;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags&nbsp;</span><span style="color: #000000; ">|=</span><span style="color: #000000; ">&nbsp;_CRTDBG_LEAK_CHECK_DF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_CrtSetReportMode(_CRT_WARN,&nbsp;_CRTDBG_MODE_FILE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_CrtSetReportFile(_CRT_WARN,&nbsp;_CRTDBG_FILE_STDOUT);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;_CrtSetDbgFlag(&nbsp;flags&nbsp;);<br />}</span></div><div><span style="color: #333333; font-family: Arial; line-height: 26px; ">这个函数在主程序的入口处调用，在程序正常退出时会打印出内存泄漏</span></div><div><span style="color: #333333; font-family: Arial; line-height: 26px; ">测试程序<span class="Apple-style-span" style="font-family: verdana, 'courier new'; font-size: 13px; line-height: 21px; color: #000000; "><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;_tmain(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;argv[]) &nbsp;</span></span></span></div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;detect_memory_leaks(<span style="color: #0000FF; ">true</span><span style="color: #000000; ">);&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">p&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">char</span><span style="color: #000000; ">[</span><span style="color: #000000; ">20</span><span style="color: #000000; ">];&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;&nbsp;<br />} &nbsp;</span></div><br /><div><span style="color: #333333; font-family: Arial; line-height: 26px; ">控制台打印信息：<br /><div><p>Detected memory leaks!</p><p>Dumping objects -&gt;</p><p>{114} normal block at 0x0039BC90, 20 bytes long.</p><p>&nbsp;Data: &lt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&gt; CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD</p><p>Object dump complete.</p><p>请按任意键继续. .&nbsp;.</p></div></span></div><img src ="http://www.cppblog.com/diego/aggbug/150048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/diego/" target="_blank">diego</a> 2011-07-03 14:32 <a href="http://www.cppblog.com/diego/archive/2011/07/03/150048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>