<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_凭“澜”远眺</title><subtitle type="text">用心记录 成长的每一步 没有经过思考的，永远都是别人的</subtitle><id>http://feed.cnblogs.com/blog/u/23287/rss</id><updated>2011-11-17T03:49:28Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/23287/rss"/><entry><id>http://www.cnblogs.com/campo/archive/2011/10/14/2211983.html</id><title type="text">面向对象语言的new操作</title><summary type="text">下面是一段简单的C++代码，分下一下new操作符究竟干了一些什么。Cpp代码classPerson{public:Person(){}~Person(){}intname;intage;};classson:publicPerson{public:son(){}~son(){}inttoy;};Cpp代码Person*p=newPerson();p-&gt;name=44;p-&gt;age=30;Person*s=newson();s-&gt;name=44;在new的地方，我们按f11跟踪进去。new是封装malloc，按照对象的大小申请内存。我们看到size是8，正好等于person中2</summary><published>2011-10-14T03:32:00Z</published><updated>2011-10-14T03:32:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2011/10/14/2211983.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2011/10/14/2211983.html"/><content type="html">&lt;span class="Apple-style-span" style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "&gt;&lt;p&gt;下面是一段简单的C++代码，分下一下new操作符究竟干了一些什么。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; width: 694px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; "&gt;&lt;div class="bar"&gt;&lt;div class="tools" style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; font-weight: bold; "&gt;Cpp代码&amp;nbsp;&lt;embed src="http://campolake.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" width="14" height="15" flashvars="clipboard=class%20Person%0A%7B%0Apublic%3A%0A%09Person()%7B%7D%0A%20%20%20%09~Person()%7B%7D%0A%09int%20name%3B%0A%09int%20age%3B%0A%7D%3B%0A%0Aclass%20son%3Apublic%20Person%0A%7B%0Apublic%3A%0A%09son()%7B%7D%0A%09~son()%7B%7D%0A%09int%20toy%3B%0A%7D%3B" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol start="1" class="dp-cpp" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #d1d7dc; border-right-color: #d1d7dc; border-bottom-color: #d1d7dc; border-left-color: #d1d7dc; color: #2b91af; "&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;Person&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;public&lt;/span&gt;&lt;span&gt;:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Person(){}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~Person(){}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;age;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;son:&lt;/span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;Person&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;public&lt;/span&gt;&lt;span&gt;:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;son(){}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~son(){}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;toy;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="dp-highlighter" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; width: 694px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; "&gt;&lt;div class="bar"&gt;&lt;div class="tools" style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; font-weight: bold; "&gt;Cpp代码&amp;nbsp;&lt;embed src="http://campolake.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" width="14" height="15" flashvars="clipboard=%20Person%20*%20%20p%3D%20new%20Person()%3B%0A%09p-%3Ename%20%3D%2044%3B%0A%09p-%3Eage%20%3D%2030%3B%0A%0A%09Person*%20s%20%3D%20new%20son()%3B%0A%09s-%3Ename%20%3D%2044%3B%0A" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol start="1" class="dp-cpp" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #d1d7dc; border-right-color: #d1d7dc; border-bottom-color: #d1d7dc; border-left-color: #d1d7dc; color: #2b91af; "&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span&gt;Person&amp;nbsp;*&amp;nbsp;&amp;nbsp;p=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Person();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;p-&amp;gt;name&amp;nbsp;=&amp;nbsp;44;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;p-&amp;gt;age&amp;nbsp;=&amp;nbsp;30;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;Person*&amp;nbsp;s&amp;nbsp;=&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;son();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;s-&amp;gt;name&amp;nbsp;=&amp;nbsp;44;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 'Courier New'; "&gt;在new的地方，我们按f11跟踪进去。new是封装malloc，按照对象的大小申请内存。我们看到size是8，正好等于person中2个int的大小。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; width: 694px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; "&gt;&lt;div class="bar"&gt;&lt;div class="tools" style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; font-weight: bold; "&gt;Cpp代码&amp;nbsp;&lt;embed src="http://campolake.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" width="14" height="15" flashvars="clipboard=void%20*__CRTDECL%20operator%20new(size_t%20size)%20_THROW1(_STD%20bad_alloc)%0A%20%20%20%20%20%20%20%20%7B%20%20%20%20%20%20%20%2F%2F%20try%20to%20allocate%20size%20bytes%0A%20%20%20%20%20%20%20%20void%20*p%3B%0A%20%20%20%20%20%20%20%20while%20((p%20%3D%20malloc(size))%20%3D%3D%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(_callnewh(size)%20%3D%3D%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20%20%20%20%20%20%20%2F%2F%20report%20no%20memory%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20static%20const%20std%3A%3Abad_alloc%20nomem%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_RAISE(nomem)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20return%20(p)%3B%0A%20%20%20%20%20%20%20%20%7D" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol start="1" class="dp-cpp" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #d1d7dc; border-right-color: #d1d7dc; border-bottom-color: #d1d7dc; border-left-color: #d1d7dc; color: #2b91af; "&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;*__CRTDECL&amp;nbsp;operator&amp;nbsp;&lt;/span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;new&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;size_t&lt;/span&gt;&lt;span&gt;&amp;nbsp;size)&amp;nbsp;_THROW1(_STD&amp;nbsp;bad_alloc)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//&amp;nbsp;try&amp;nbsp;to&amp;nbsp;allocate&amp;nbsp;size&amp;nbsp;bytes&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;*p;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;while&lt;/span&gt;&lt;span&gt;&amp;nbsp;((p&amp;nbsp;=&amp;nbsp;malloc(size))&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(_callnewh(size)&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//&amp;nbsp;report&amp;nbsp;no&amp;nbsp;memory&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;const&lt;/span&gt;&lt;span&gt;&amp;nbsp;std::bad_alloc&amp;nbsp;nomem;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_RAISE(nomem);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;(p);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;那malloc又做了些什么操作呢。调用了 dbgmalloc.c 和dbgheap.c.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; width: 694px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; "&gt;&lt;div class="bar"&gt;&lt;div class="tools" style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; font-weight: bold; "&gt;Cpp代码&amp;nbsp;&lt;embed src="http://campolake.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" width="14" height="15" flashvars="clipboard=extern%20%22C%22%20_CRTIMP%20void%20*%20__cdecl%20malloc%20(%0A%20%20%20%20%20%20%20%20size_t%20nSize%0A%20%20%20%20%20%20%20%20)%0A%7B%0A%20%20%20%20%20%20%20%20void%20*res%20%3D%20_nh_malloc_dbg(nSize%2C%20_newmode%2C%20_NORMAL_BLOCK%2C%20NULL%2C%200)%3B%0A%0A%20%20%20%20%20%20%20%20RTCCALLBACK(_RTC_Allocate_hook%2C%20(res%2C%20nSize%2C%200))%3B%0A%0A%20%20%20%20%20%20%20%20return%20res%3B%0A%7D" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol start="1" class="dp-cpp" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #d1d7dc; border-right-color: #d1d7dc; border-bottom-color: #d1d7dc; border-left-color: #d1d7dc; color: #2b91af; "&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;extern&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"C"&lt;/span&gt;&lt;span&gt;&amp;nbsp;_CRTIMP&amp;nbsp;&lt;/span&gt;&lt;span class="keyword" style="color: #7f0055; "&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;*&amp;nbsp;__cdecl&amp;nbsp;malloc&amp;nbsp;(&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;size_t&lt;/span&gt;&lt;span&gt;&amp;nbsp;nSize&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;*res&amp;nbsp;=&amp;nbsp;_nh_malloc_dbg(nSize,&amp;nbsp;_newmode,&amp;nbsp;_NORMAL_BLOCK,&amp;nbsp;NULL,&amp;nbsp;0);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RTCCALLBACK(_RTC_Allocate_hook,&amp;nbsp;(res,&amp;nbsp;nSize,&amp;nbsp;0));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;res;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;span style="white-space: pre; background-color: #fafafa; "&gt;extern "C" void * __cdecl _nh_malloc_dbg (&lt;/span&gt;&lt;/p&gt;&lt;div class="dp-highlighter" style="font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; background-color: transparent; width: 694px; margin-left: 9px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; word-break: break-all; word-wrap: break-word; "&gt;&lt;div class="bar"&gt;&lt;div class="tools" style="padding-right: 3px; padding-bottom: 3px; padding-left: 3px; text-align: left; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: black; font-weight: bold; "&gt;Cpp代码&amp;nbsp;&lt;embed src="http://campolake.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" width="14" height="15" flashvars="clipboard=%20%20%20%20%20%20%20%20size_t%20nSize%2C%0A%20%20%20%20%20%20%20%20int%20nhFlag%2C%0A%20%20%20%20%20%20%20%20int%20nBlockUse%2C%0A%20%20%20%20%20%20%20%20const%20char%20*%20szFileName%2C%0A%20%20%20%20%20%20%20%20int%20nLine%0A%20%20%20%20%20%20%20%20)%0A%7B%0A%20%20%20%20%20%20%20%20int%20errno_tmp%20%3D%200%3B%0A%20%20%20%20%20%20%20%20void%20*%20pvBlk%20%3D%20_nh_malloc_dbg_impl(nSize%2C%20nhFlag%2C%20nBlockUse%2C%20szFileName%2C%20nLine%2C%20%26errno_tmp)%3B%0A%0A%20%20%20%20%20%20%20%20if%20(%20pvBlk%20%3D%3D%20NULL%20%26%26%20errno_tmp%20!%3D%200%20%26%26%20_errno())%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20errno%20%3D%20errno_tmp%3B%20%2F%2F%20recall%2C%20%23define%20errno%20*_errno()%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20pvBlk%3B%0A%7D" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol start="1" class="dp-cpp" style="font-size: 1em; line-height: 1.4em; margin-left: 0px; padding-top: 2px; padding-bottom: 2px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #d1d7dc; border-right-color: #d1d7dc; border-bottom-color: #d1d7dc; border-left-color: #d1d7dc; color: #2b91af; "&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;size_t&lt;/span&gt;&lt;span&gt;&amp;nbsp;nSize,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;nhFlag,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;nBlockUse,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;const&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;char&lt;/span&gt;&lt;span&gt;&amp;nbsp;*&amp;nbsp;szFileName,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;nLine&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="datatypes" style="color: #2e8b57; font-weight: bold; "&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;errno_tmp&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;*&amp;nbsp;pvBlk&amp;nbsp;=&amp;nbsp;_nh_malloc_dbg_impl(nSize,&amp;nbsp;nhFlag,&amp;nbsp;nBlockUse,&amp;nbsp;szFileName,&amp;nbsp;nLine,&amp;nbsp;&amp;amp;errno_tmp);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;pvBlk&amp;nbsp;==&amp;nbsp;NULL&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;errno_tmp&amp;nbsp;!=&amp;nbsp;0&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;_errno())&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;errno&amp;nbsp;=&amp;nbsp;errno_tmp;&amp;nbsp;&lt;span class="comment"&gt;//&amp;nbsp;recall,&amp;nbsp;#define&amp;nbsp;errno&amp;nbsp;*_errno()&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword" style="color: #7f0055; "&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;pvBlk;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-size: 1em; margin-left: 38px; padding-right: 0px; border-left-width: 1px; border-left-color: #d1d7dc; background-color: #fafafa; line-height: 18px; "&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&amp;nbsp;&lt;p&gt;没有深究，有时间补上，有研究的童鞋请赐教&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="white-space: pre; "&gt;&lt;/span&gt;参考文章：&lt;a title="malloc 的工作原理" href="http://blog.csdn.net/hejinjing_tom_com/article/details/4059711" target="_blank" style="color: #108ac6; text-decoration: underline; "&gt;http://blog.csdn.net/hejinjing_tom_com/article/details/4059711&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="white-space: pre; "&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;我们知道new操作要调用对应的构造函数，可是我们在new操作的代码中并没有看到调用构造函数的任何代码，我们被书忽悠了？&lt;/p&gt;&lt;p&gt;那构造函数又是什么时候调用的呢。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;请参考 &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h1 class="postTitle" style="font-size: 14px; line-height: 1.5em; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #000000; font-weight: bold; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dddddd; "&gt;&lt;a id="ctl02_TitleUrl" href="http://www.cnblogs.com/gussing/archive/2009/06/25/1511184.html" style="color: #399ab2; text-decoration: none; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;一件被误导很久的事：关于new和delete&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;div style="display: inline-block; "&gt;&lt;/div&gt;&lt;/p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: normal; background-color: #ffffff; "&gt;&lt;p&gt;点击debug菜单window中的disassembly，查看汇编代码，很容易找到如下代码&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Person *  p= new Person();&lt;br/&gt;00171860  push        28h  &lt;br/&gt;00171862  call      &lt;font class="Apple-style-span" color="#ff6600"&gt;  operator new (17131Bh)  &lt;/font&gt;&lt;br/&gt;00171867  add         esp,4  &lt;br/&gt;0017186A  mov         dword ptr [ebp-1A0h],eax  &lt;br/&gt;00171870  mov         dword ptr [ebp-4],1  &lt;br/&gt;00171877  cmp         dword ptr [ebp-1A0h],0  &lt;br/&gt;0017187E  je          test+103h (171893h)  &lt;br/&gt;00171880  mov         ecx,dword ptr [ebp-1A0h]  &lt;br/&gt;00171886  call        &lt;font class="Apple-style-span" color="#ff6600"&gt;Person::Person (1713B6h)  &lt;/font&gt;&lt;br/&gt;0017188B  mov         dword ptr [ebp-1CCh],eax  &lt;br/&gt;00171891  jmp         test+10Dh (17189Dh)  &lt;br/&gt;00171893  mov         dword ptr [ebp-1CCh],0  &lt;br/&gt;0017189D  mov         eax,dword ptr [ebp-1CCh]  &lt;br/&gt;001718A3  mov         dword ptr [ebp-1ACh],eax  &lt;br/&gt;001718A9  mov         dword ptr [ebp-4],0FFFFFFFFh  &lt;br/&gt;001718B0  mov         ecx,dword ptr [ebp-1ACh]  &lt;br/&gt;001718B6  mov         dword ptr [ebp-20h],ecx  &lt;br/&gt;p-&amp;gt;name  = "44";&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;对比C++代码，在 &amp;nbsp;&lt;span class="Apple-style-span" style="white-space: pre; background-color: #fafafa; "&gt;Person *  p= new Person(); 和&lt;/span&gt;&lt;span class="Apple-style-span" style="white-space: pre; background-color: #fafafa; "&gt;p-&amp;gt;name  = "44"中间的应该就是new运算符对应的汇编。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="quote_title" style="font-weight: bold; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; margin-top: 5px; margin-right: 0px; margin-bottom: 0px; margin-left: 15px; "&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: verdana, ����, Arial; font-size: 13px; font-weight: normal; line-height: 19px; "&gt;&lt;a href="http://home.cnblogs.com/u/gussing/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: #399ab2; "&gt;gussing&lt;/a&gt;&lt;/span&gt;&amp;nbsp;写道&lt;/div&gt;&lt;div class="quote_div" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; margin-top: 0px; margin-right: 5px; margin-bottom: 5px; margin-left: 15px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #fafafa; background-position: initial initial; background-repeat: initial initial; "&gt;对类a的构造函数的调用，是编译器偷偷在你的函数里插入的，当时的情况就是如此。delete的情况也是一摸一样。&lt;/div&gt;&amp;nbsp;我们分析对构造函数的调用应该是编译器插入的。 至于怎么插入的，现在还不太明白。&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;参考文章：&lt;a title="C++中使用基类指针操作子类数组的分析(转)" href="http://hi.baidu.com/linx214/blog/item/62251ace1f970e35f8dc6116.html" style="color: #108ac6; text-decoration: underline; "&gt;http://hi.baidu.com/linx214/blog/item/62251ace1f970e35f8dc6116.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;这个没有找到原帖，抱歉。&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px; "&gt;&lt;a title="子类是怎样调用父类的成员函数的" href="http://blog.csdn.net/wishfly/article/details/5030381" style="color: #000000; text-decoration: none; "&gt;&lt;span style="font-size: x-small; "&gt;子类是怎样调用父类的成员函数的&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 20px; "&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a title="子类是怎样调用父类的成员函数的" href="http://blog.csdn.net/wishfly/article/details/5030381" style="color: #108ac6; text-decoration: underline; "&gt;http://blog.csdn.net/wishfly/article/details/5030381&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 class="titName SG_txta" style="font-size: 1.5em; line-height: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: black; "&gt;&lt;span style="font-size: x-small; "&gt;C++：从子类访问父类的私有函数 &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 12px; "&gt;&lt;a href="http://hi.baidu.com/structureit/blog/item/3b041f6d86945af64216940c.html" style="color: #108ac6; text-decoration: underline; "&gt;http://hi.baidu.com/structureit/blog/item/3b041f6d86945af64216940c.html&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;a href="http://campolake.iteye.com/blog/1195685"&gt;http://campolake.iteye.com/blog/1195685&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "&gt;&lt;p&gt;原文地址：&lt;/p&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "&gt;&lt;a href="http://campolake.iteye.com/blog/1195685"&gt;http://campolake.iteye.com/blog/1195685&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; line-height: 18px; background-color: #ffffff; "&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/campo/aggbug/2211983.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/campo/archive/2011/10/14/2211983.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2011/09/13/javascript1.html</id><title type="text">javascript复习一 JavaScript的面向对象</title><summary type="text">以前自己仅是根据自己的编程经验来处理javascript，javascript的入门门槛儿较低，不用知道很多的细节就可以编码，以至于自己并没有系统的学习。最近想系统的学习一下，特记录如下。javascript的对象篇。</summary><published>2011-09-13T13:42:00Z</published><updated>2011-09-13T13:42:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2011/09/13/javascript1.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2011/09/13/javascript1.html"/><content type="html">&lt;p&gt;以前自己仅是根据自己的编程经验来处理javascript，javascript的入门门槛儿较低，不用知道很多的细节就可以编码，以至于自己并没有系统的学习。最近想系统的学习一下，特记录如下。&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;JavaScript 对象是字典 &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;在javascript中对象是一组键值对，我们可以通过&amp;nbsp; "."或者 "[]" 来获取或者设置对象的属性。&lt;/p&gt;  var person = new Object();&lt;br/&gt;person.name = "jerry";&lt;br/&gt;person.age  = 28;&lt;br/&gt;&lt;br/&gt;alert("名称：" + person.name + "  年龄" + person.age);&lt;p&gt;以上代码等效于下面的代码：&lt;/p&gt;var person1 = {"name":"jerry","age":28};&lt;br/&gt;alert("名称：" + person1.name + "  年龄" + person1.age);这就是我们熟悉的&lt;a href="http://baike.baidu.com/view/136475.htm"&gt;JSON&lt;/a&gt;表示方法。 &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2：给对象加入方法。&lt;/p&gt;var person = new Object();&lt;br/&gt;person.name = "jerry";&lt;br/&gt;person.age  = 28;&lt;br/&gt;&lt;br/&gt;person.sayHello = function(msg)&lt;br/&gt;{alert(msg)};&lt;br/&gt;//alert("名称：" + person.name + "  年龄" + person.age);&lt;br/&gt;&lt;br/&gt;var person1 = {"name":"jerry","age":28&lt;br/&gt;,"sayHello":function(msg)&lt;br/&gt;{alert(msg);}&lt;br/&gt;};&lt;br/&gt;person1.sayHello("hello word");&lt;br/&gt;&lt;br/&gt;person.sayHello("hello word");&lt;p&gt;3：用functions来封装对象&lt;/p&gt;function person(name)&lt;br/&gt;{&lt;br/&gt;this.name = name;&lt;br/&gt;this.sayHello = function()&lt;br/&gt;{alert(this.name);};&lt;br/&gt;}&lt;br/&gt;var p = new person("jeffry");&lt;br/&gt;p.sayHello();&lt;img src="http://www.cnblogs.com/campo/aggbug/2175145.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/campo/archive/2011/09/13/javascript1.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2008/09/04/How-To-Insert-Upperclss-word.html</id><title type="text">C#在word中插入上标的问题</title><summary type="text">现在导出word 像 2* 10 2在word中也要求这样显示 解决方案：1：以HTML文件的的形式插入2：</summary><published>2008-09-04T15:18:00Z</published><updated>2008-09-04T15:18:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2008/09/04/How-To-Insert-Upperclss-word.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2008/09/04/How-To-Insert-Upperclss-word.html"/><content type="text">现在导出word 像 2* 10 2在word中也要求这样显示 解决方案：1：以HTML文件的的形式插入2：</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2008/06/25/1229400.html</id><title type="text">新建SSIS项目失败或者在SSIS项目中新建包失败</title><summary type="text">Try registering MSXML:regsvr32 msxml3.dllregsvr32 msxml6.dllhttp://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_22061897.htmlhttp://forums.microsoft.com/msdn/showpost.aspx?postid=536...</summary><published>2008-06-25T02:10:00Z</published><updated>2008-06-25T02:10:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2008/06/25/1229400.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2008/06/25/1229400.html"/><content type="text">Try registering MSXML:regsvr32 msxml3.dllregsvr32 msxml6.dllhttp://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/Q_22061897.htmlhttp://forums.microsoft.com/msdn/showpost.aspx?postid=536...</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2008/03/06/1092942.html</id><title type="text">简单数据库操作</title><summary type="text">usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingLogic;publicpartialclassedit:System.Web.UI.Page{priva</summary><published>2008-03-06T01:13:00Z</published><updated>2008-03-06T01:13:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2008/03/06/1092942.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2008/03/06/1092942.html"/><content type="text">usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingLogic;publicpartialclassedit:System.Web.UI.Page{priva</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2008/03/04/1090375.html</id><title type="text">javascript 窗口关闭后和窗口关闭之前调用的事件</title><summary type="text">窗口关闭后调用：body的 onunload事件在点击右上角的“X”关闭窗口，弹出是否关闭确认框的代码如下：&lt;script&gt;functionwindow.onbeforeunload(){event.returnValue="是否需要注销";}&lt;/script&gt;</summary><published>2008-03-04T08:18:00Z</published><updated>2008-03-04T08:18:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2008/03/04/1090375.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2008/03/04/1090375.html"/><content type="text">窗口关闭后调用：body的 onunload事件在点击右上角的“X”关闭窗口，弹出是否关闭确认框的代码如下：&lt;script&gt;functionwindow.onbeforeunload(){event.returnValue="是否需要注销";}&lt;/script&gt;</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2008/01/07/1029353.html</id><title type="text">往消息队列传数据的存储过程</title><summary type="text">ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[SendMSMQMessage] @FormatName nvarchar(255),--队列FormatName@Label nvarchar(250)--消息标签ASBEGINSET NOCOUNT ON;DECLARE @MSMQInfo int,@MSMQ in...</summary><published>2008-01-07T10:40:00Z</published><updated>2008-01-07T10:40:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2008/01/07/1029353.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2008/01/07/1029353.html"/><content type="text">ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[SendMSMQMessage] @FormatName nvarchar(255),--队列FormatName@Label nvarchar(250)--消息标签ASBEGINSET NOCOUNT ON;DECLARE @MSMQInfo int,@MSMQ in...</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2007/11/21/967627.html</id><title type="text">C#泛型学习</title><summary type="text">C# 2.0 语言泛型泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework，类型参数使得设计如下类和方法成为可能：这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如，通过使用泛型类型参数 T，您可以编写其他客户端代码能够使用的单个类，而不致引入运行时强制转换或装箱操作的成本或风险，如下所...</summary><published>2007-11-21T10:22:00Z</published><updated>2007-11-21T10:22:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2007/11/21/967627.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2007/11/21/967627.html"/><content type="text">C# 2.0 语言泛型泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework，类型参数使得设计如下类和方法成为可能：这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如，通过使用泛型类型参数 T，您可以编写其他客户端代码能够使用的单个类，而不致引入运行时强制转换或装箱操作的成本或风险，如下所...</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2007/11/18/963312.html</id><title type="text">空气污染指数的计算公式是什么？(API)</title><summary type="text">采样系统将空气吸入监测仪器中，仪器进行分析后将数据以电信号的形式传到位于监测中心的中心站，数据经过中心站的处理后就可以向公众公布. 按照国家统一规定，空气质量达到优良标准即达到国家质量二级标准是指空气污染指数小于等于100，如果空气污染指数小于等于50，说明空气质量为优。 空气污染指数大于50且小于等于100时，说明空气质量为良好 空气质量是如何评定的？ 答：我国空气质量采用了空气污染指数进行评价...</summary><published>2007-11-18T09:32:00Z</published><updated>2007-11-18T09:32:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2007/11/18/963312.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2007/11/18/963312.html"/><content type="text">采样系统将空气吸入监测仪器中，仪器进行分析后将数据以电信号的形式传到位于监测中心的中心站，数据经过中心站的处理后就可以向公众公布. 按照国家统一规定，空气质量达到优良标准即达到国家质量二级标准是指空气污染指数小于等于100，如果空气污染指数小于等于50，说明空气质量为优。 空气污染指数大于50且小于等于100时，说明空气质量为良好 空气质量是如何评定的？ 答：我国空气质量采用了空气污染指数进行评价...</content></entry><entry><id>http://www.cnblogs.com/campo/archive/2007/11/16/961727.html</id><title type="text">行列转换</title><summary type="text">//查询人员信息的sql语句stringUsrSql="selectdistinctproid,pronamefromv_ProjectAndUserInfo"+con;DataTableUserDt=GetTable(UsrSql);StringBuildersBuilder=newStringBuilder();sBuilder.Append("SELECTdisnameas'姓名',");f...</summary><published>2007-11-16T07:47:00Z</published><updated>2007-11-16T07:47:00Z</updated><author><name>澜心</name><uri>http://www.cnblogs.com/campo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/campo/archive/2007/11/16/961727.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/campo/archive/2007/11/16/961727.html"/><content type="text">//查询人员信息的sql语句stringUsrSql="selectdistinctproid,pronamefromv_ProjectAndUserInfo"+con;DataTableUserDt=GetTable(UsrSql);StringBuildersBuilder=newStringBuilder();sBuilder.Append("SELECTdisnameas'姓名',");f...</content></entry></feed>
