??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久无码精品,狠狠色丁香久久婷婷综合蜜芽五月 ,伊人久久久AV老熟妇色http://m.shnenglu.com/happem/zh-cnTue, 01 Jul 2025 07:16:18 GMTTue, 01 Jul 2025 07:16:18 GMT60什么是函数链接规范http://m.shnenglu.com/happem/archive/2012/09/26/192044.htmlhappemhappemWed, 26 Sep 2012 02:32:00 GMThttp://m.shnenglu.com/happem/archive/2012/09/26/192044.htmlhttp://m.shnenglu.com/happem/comments/192044.htmlhttp://m.shnenglu.com/happem/archive/2012/09/26/192044.html#Feedback0http://m.shnenglu.com/happem/comments/commentRss/192044.htmlhttp://m.shnenglu.com/happem/services/trackbacks/192044.html在用不同编E语aq行软g联合开发的时候,需要统一函数、变量、数据类型、常量等链接规范Q特别是在不同模块之间共享的接口部分Q当开发程序库的时候,明确链接规范也是必须遵@的一条规则?/span>

 

对COM接口及其使用的数据类型来_是否采用l一的链接规范,对其二进制兼Ҏ和可移植性都没有影响。因接规范主要媄响到名字改编Ҏ的不同,q样即接口两端Ҏ口本w的解释不通,只要它们使用一致的成员寚w方式和布局Ҏ、一致的函数调用规范、一致virtual function实现方式QL是一致的C++对象模型。ƈ且保证COMlg升时不改变原来的接口和数据cd定义Q则所有方法的q行时绑定都不会存在问题Q所有方法的调试都被转换为通过对象指针对vptr和vtable及函数指针的操作Q这U间接性不再需要Q何方法名卛_数名的参与,而接口名和方法名只是Z让客L的代码能够顺利通过~译Q但是连接时完全不在需要了。)

 

但是对于定义于普通静态链接库和动态链接库中的全局数据cd、全局函数、全局变量甚至全局帔RQ它们的q接规范必须在两端保持一致、否则客L序会出现q接问题。这是因为普通的装为DLL的函数库或者类库,客户E序在创Z一般都需要与它们的导出库q行q接Q除非用loadlibrary()和getprocaddress()函数Ҏ获得DLL中函数的地址Q通用的连接规范要属Cq接规范Qextern‘C’?/span>

具体使用ҎQ?/span>里仁教育嵌入式培?/span>职业讲师详情讲解Q?/span>

Extern’C’void WinMainCRTStartup()Q?/span>

Extern’C’const CLSID CLSID_DataConvert()Q?/span>

Extern’C’struct Student{.......}Q?/span>

Extern’C’student g_student;

如果是对一D代码指定连接规范:

#ifdef  _cplusplus

Extern ‘C’{

#endif

Const int MAX_AGE=200Q?/span>

#pragma pack(push,4)

Typedef struct _person

{

 Char *m_Name;

 Int m_Age;

}person,*personPtr;

#pragma pack(pop)

Person g_Me;

 Int _cdecl memcmp(const void*,const void*,size_t)Q?/span>

 Void * _cdecl memcpy(void,const void*,size_t)Q?/span>

 Void* _cdecl memset(void*,int,size_t)Q?/span>

#ifdef _cplusplus

}

#endif


嵌入式行业资讯:全套基础Q?a >http://www.lirenedu.org/index.php?ack=lanmu&id=82 

happem 2012-09-26 10:32 发表评论
]]>
如何消灭q程http://m.shnenglu.com/happem/archive/2012/09/18/191079.htmlhappemhappemTue, 18 Sep 2012 02:23:00 GMThttp://m.shnenglu.com/happem/archive/2012/09/18/191079.htmlhttp://m.shnenglu.com/happem/comments/191079.htmlhttp://m.shnenglu.com/happem/archive/2012/09/18/191079.html#Feedback0http://m.shnenglu.com/happem/comments/commentRss/191079.htmlhttp://m.shnenglu.com/happem/services/trackbacks/191079.html有些q程在运行时会占用大量的CPUQ有些进E会DXLQ有些进E会吞噬掉大量的内存Q这些进E直接媄响了用户的正常工作,最直接的现象就是系l运行缓慢,L{现象,处理q些q程一般的Ҏ是l束q个q程Q就是所说的把它KILL掉。下面介l几U消灭进E的Ҏ?/span>

使用Kill命o来消灭进E?/span>

  如果q行了某个程序导致了LQ那么就应该切换到其他的控制CQ按下ctrl+alt+fxQ其中x可以?·5Q这取决于用Ltry的多?/span>

 用ps昄q个E序的进EID?/span>

q里以xchatZ?/span>

 $ps aux |grep xchat

 Wanglin 12063 0.0 1.8 89536 19028 ?S1 apr06 2:40 xchat

 其中12063是它的ID?/span>

 也可以用pgrep来显CIDQ如下:

 $pgrep xchar 

 12063

 使用Kill来消灭这个进E?/span>

 使用kil来消灭进E,如果消灭不掉Q还要加参数-9Q它可以强制l束q程?/span>

  $ kill 12063

  $ kill -9 12063

使用pkill或者killall来消灭进E?/span>

  它们的共同点是都可以用E序的名UC为参数?/span>

  $ pkill -9 xchat

  $ killall xchat

使用囑Ş化的方式来消灭进E?/span>

 $xkill

会出C个X形的光标Q单击需要消灭的H口Q就可以消灭q个E序?a >www.lirenedu.org



happem 2012-09-18 10:23 发表评论
]]>
如何l用L文g打补?/title><link>http://m.shnenglu.com/happem/archive/2012/09/18/191078.html</link><dc:creator>happem</dc:creator><author>happem</author><pubDate>Tue, 18 Sep 2012 02:23:00 GMT</pubDate><guid>http://m.shnenglu.com/happem/archive/2012/09/18/191078.html</guid><wfw:comment>http://m.shnenglu.com/happem/comments/191078.html</wfw:comment><comments>http://m.shnenglu.com/happem/archive/2012/09/18/191078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/happem/comments/commentRss/191078.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/happem/services/trackbacks/191078.html</trackback:ping><description><![CDATA[<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Patch的主要用途就是更新源代码到新的版本,避免下蝲整个源代码,下蝲一个有效的补丁仅仅需要下载发生变化的那些代码行就可以了,patch的帮助文档中|列了众多的用法Q其实大多数的时间只要下面两个命令参数就能满_家的需要。下面讲解patch的用法,以Ubuntu7.10pȝZ?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"> 1. 命o格式</span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">  #patch -p1<[patchfile]</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">  或?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">#patch -R <[patchfile]</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">上面两个格式任选一条就可以了?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">2.</span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">使用Ҏ</span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">   #patch -p1<[patchfile]</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">要求补丁文g要放到源代码目录下,然后在运行这条命令?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">例如Q给xchat2.6.0打补丁, 补丁文g是xc260-fetext.diff?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">首先选入 xchat2.6.0的目录, q且xc260-fix-fetext.diff文g复制到这个目录,然后q行Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> #patch -p1<xc260-fix-fetext.diff</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">如果出现提示信息Qpatching file src/text/fe-text/fe-text.c q说明打补丁成功了?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> #patch -R<[pathfile]</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">q个命oq行后,q要指定被补丁的文g的\径和文g?www.lirenedu.org </span></p><!--EndFragment--><img src ="http://m.shnenglu.com/happem/aggbug/191078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/happem/" target="_blank">happem</a> 2012-09-18 10:23 <a href="http://m.shnenglu.com/happem/archive/2012/09/18/191078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntupȝ下:如何快速配|网l?/title><link>http://m.shnenglu.com/happem/archive/2012/09/12/190394.html</link><dc:creator>happem</dc:creator><author>happem</author><pubDate>Wed, 12 Sep 2012 06:57:00 GMT</pubDate><guid>http://m.shnenglu.com/happem/archive/2012/09/12/190394.html</guid><wfw:comment>http://m.shnenglu.com/happem/comments/190394.html</wfw:comment><comments>http://m.shnenglu.com/happem/archive/2012/09/12/190394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/happem/comments/commentRss/190394.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/happem/services/trackbacks/190394.html</trackback:ping><description><![CDATA[<p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">在Ubuntupȝ下工作,只掌握图形化的配|工兯是不够的Q系l在出现故障的时候往往使用的是l端的操作模式,下面里仁3G培训讲师介绍在终端下如何配置|络?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">临时改变|络参数</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">.Ifconfig:查看和配|IP地址?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$ifconfig eth0</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$sudo ifconfig eth0 192.168.9.23 netmask 255.255.255.0</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">route:配置路由参数</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$sudo route add default gw 192.168.9.1 eth0 #讄默认|关</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">使参数立即生?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$sudo/etc/init.d/networking restart</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">修改|络配置文g</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">讄DNS服务器?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$sudo echo‘nameserver=219.150.32.132>/etc/resolv.conf’</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">~辑/etc/network/interfaces?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$sudo vim /etc/network/interfaces</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Auto lo</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Iface lo inet loopback</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Iface eth0 inet static   #讄eth0,静态IP</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Address 192.168.8.45</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Netmask 255.255.255.0</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Gateway 192.168.8.1</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Iface eht1inet dhcp #讄eth1为dhcp模式</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">可以通过下面的命令设|\由?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Up route add default gw 192.168.8.1 eth1</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Up route add –net 192.168.8.0/24 gw 192.168.8.1 eth0</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Down route del –net 192.168.8.0/24 gw 192.168.8.1 eth0</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">其中Q当|络接口upӞ执行它后面的命oQ当|络接口downӞ执行它后面的命o?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">使用参数立即生效?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="text-align: left; margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$sudo /etc/init.d/networking restart<font face="Verdana"> 转:<a >www.lirenedu.org</a> </font></span></p><!--EndFragment--><img src ="http://m.shnenglu.com/happem/aggbug/190394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/happem/" target="_blank">happem</a> 2012-09-12 14:57 <a href="http://m.shnenglu.com/happem/archive/2012/09/12/190394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pȝ信息命o使用技?/title><link>http://m.shnenglu.com/happem/archive/2012/09/12/190393.html</link><dc:creator>happem</dc:creator><author>happem</author><pubDate>Wed, 12 Sep 2012 06:55:00 GMT</pubDate><guid>http://m.shnenglu.com/happem/archive/2012/09/12/190393.html</guid><wfw:comment>http://m.shnenglu.com/happem/comments/190393.html</wfw:comment><comments>http://m.shnenglu.com/happem/archive/2012/09/12/190393.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/happem/comments/commentRss/190393.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/happem/services/trackbacks/190393.html</trackback:ping><description><![CDATA[<p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">许多学员都?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">linux</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">来完成各U工作,包括学习、办公、编E、网l维护等Q但Ҏ使用pȝ的一些基本信息知了甚,有的q自己显卡的型号?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">CPU</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">的具体型受硬盘的使用情况、内存的使用情况|络的用情况都不清楚,一旦系l出现故障,无从下手,所以在此里?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">3G</span><span><a ><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><font color="#7b7c80">嵌入式培?/font></span></a></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">讲师有必要给大家介绍如何准确地获得自qpȝ信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21.25pt; margin-bottom: 0pt; margin-left: 21.25pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">1. </span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">pȝ信息</span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看内核信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$uname -a</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看操作pȝ的版本?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$head <font face="宋体">–</font><font face="Times New Roman">n 1/etc/issue</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">CPU</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">的信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$cat /proc/cpuinfo</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看计算机名U?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$hostname</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">列出所?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">PCI</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">讑֤信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$lspci <font face="宋体">–</font><font face="Times New Roman">tv</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">列出所?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">USB</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">讑֤信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$lsusb <font face="宋体">–</font><font face="Times New Roman">tv</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">列出pȝ加蝲的模块信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$lsmod</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21.25pt; margin-bottom: 0pt; margin-left: 21.25pt" class="p0"><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">2. </span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">pȝ资源的用信息?/span><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看内存和交换区分的使用量?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$free <font face="宋体">–</font><font face="Times New Roman">m</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看盘分区的用情c?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$df <font face="宋体">–</font><font face="Times New Roman">h</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看某个目录的大?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$du <font face="宋体">–</font><font face="Times New Roman">sh<</font></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">目录</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看内存总量和空闲内存量?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$grep memTotal /proc/meminfo</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$grep memfree /proc/meminfo</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看pȝq行旉、用h和负载?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$uptime</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 21pt" class="p0"><span style="font-family: 'Wingdings'; font-size: 10.5pt; mso-spacerun: 'yes'">l </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">查看pȝ负蝲?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">$cat /proc/loadavg <a >www.lirenedu.org</a> </span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p><!--EndFragment--><img src ="http://m.shnenglu.com/happem/aggbug/190393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/happem/" target="_blank">happem</a> 2012-09-12 14:55 <a href="http://m.shnenglu.com/happem/archive/2012/09/12/190393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Z么需要构造函数和析构函数http://m.shnenglu.com/happem/archive/2012/09/03/189235.htmlhappemhappemMon, 03 Sep 2012 02:56:00 GMThttp://m.shnenglu.com/happem/archive/2012/09/03/189235.htmlhttp://m.shnenglu.com/happem/comments/189235.htmlhttp://m.shnenglu.com/happem/archive/2012/09/03/189235.html#Feedback0http://m.shnenglu.com/happem/comments/commentRss/189235.htmlhttp://m.shnenglu.com/happem/services/trackbacks/189235.html 

~译器无法预期一个程序在执行q程中会在何时创Z些什么对象,而只能根据当时的上下文要求创建,对象的初始化最好能够通过q行时执行一个函数来完成Q而且是在对象创徏的同Ӟq个函数是构造函敎ͼ同样Q对象在完成其命的时候能够通过一个函数来销毁,q就是析构函数?/span>

当给一个对象分配好原始内存I间的时候,q个对象应该算创徏h了。只不过它还处于一U?#8220;原始状?#8221;Q即末初始化的,不良的状态,如果把这L内存直接拿来使用Q除非第一个操作是赋|否则极有可能出错。例如:

   Long long1;         //局部变?/span>

   Count<

   Char*pstr=(char*)malloc(1024);

   Cout<

因此Q创Z个变量或动态对象时一定不要忘记初始化?nbsp;初始化就是在对象创徏的同时用初值直接填充对象的内存单元Q因此,不会有数据类型{换等中间q程Q也׃会生时对象,而赋值则是在对象创徏好后M时候都可以调用的而且可以多次调用的函敎ͼ׃它调用的?#8220;=”q算W,因此可能需要进行类型{换,即会产生临时对象?/span>

C++对象可以使用构造函数来初始化,构造函数是M对象创徏时自动调用的W一个成员函敎ͼ也是为每个对象仅调用一ơ的成员函数Q所以构造函数的作用是Q?/span>当对象的内存分配好后把它原始状态变成良好的可用的状态?/span>

有的E序员可能认为:虽然我没有在构造函C初始化数据成员,但是我在声明一个对象后马上调用它的set-XXX()函数来初始化它的每一个成员,效果也是一L?/span>

最好ؓ每个cL式地定义构造函数和析构函数Q即使它们暂时空着Q尤其是当类含有指针成员或引用成员的时候?/span>

构造函数的另一重要用途就是给一些可能可能存在的隐含成员如vptr创造一个初始化的机会,否则虚拟机将不能保证实现Q每当此Ӟ如果E序员没有ؓ一个多态类昑ּ地定义默认构造函数、拷贝构造函数、析构函数或拯赋值函敎ͼ那么~译器会自动得生成相应的函数Q它们都是public inline的,q在其中插入正确初始化或修改vptr数据成员值的代码Q而且保基类对象和派生类对象构造时及在它们之间拯时vptr能够指向或重新指向恰当的vtableQ这L4个函数分布叫非^凡默认构造函数、非q_拯构造函数、非q_析构函数和非q_拯赋值函数?a >www.lirenedu.org



happem 2012-09-03 10:56 发表评论
]]>
C基础下的函数调用技?/title><link>http://m.shnenglu.com/happem/archive/2012/09/03/189234.html</link><dc:creator>happem</dc:creator><author>happem</author><pubDate>Mon, 03 Sep 2012 02:55:00 GMT</pubDate><guid>http://m.shnenglu.com/happem/archive/2012/09/03/189234.html</guid><wfw:comment>http://m.shnenglu.com/happem/comments/189234.html</wfw:comment><comments>http://m.shnenglu.com/happem/archive/2012/09/03/189234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/happem/comments/commentRss/189234.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/happem/services/trackbacks/189234.html</trackback:ping><description><![CDATA[<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">与函数堆栈用密切相关的是函数调用规范Q即调用U定(Calling Convenion)。函数调用规范决定了函数调用的实参压栈、退栈及堆栈释放的方式以及函数名改编的方案,windows环境下常用的调用规范有:</span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 10.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 26.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">1)</span><span style="font-style: normal; font-family: '宋体'; font-size: 10.5pt; font-weight: normal; mso-spacerun: 'yes'">      </span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">_cedcl:</span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">q是C++/C函数的默认调用规?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q参C叛_左传递压入堆栈,p用函数复杂堆栈的清退Q因此这U方式利于传递个数可变的参数l被调用函数。如printf()是q样的函数?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 26.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">2)</span><span style="font-style: normal; font-family: '宋体'; font-size: 10.5pt; font-weight: normal; mso-spacerun: 'yes'">      </span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">_stdcall:</span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">q是Win API函数使用的调用规范,</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">参数从右向左依次传递ƈ压入堆栈Q由被调用函数复杂堆栈的清退。该规范生成的函C码比_cdecl更小Q但当函数有可变个数的参数时会{为_cdecl规范。在Windows中,宏WINAPI、CALLBACK都定义ؓ_stdcall?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 26.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">3)</span><span style="font-style: normal; font-family: '宋体'; font-size: 10.5pt; font-weight: normal; mso-spacerun: 'yes'">      </span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">_thiscall:</span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">是C++非静态成员函数的默认调用规范</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q不能用个数可变的参数。当调用非静态成员函数的时候,this指针直接保存在ECX寄存器中而压入函数堆栈,其他斚w与_stdcall相同?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 26.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">4)</span><span style="font-style: normal; font-family: '宋体'; font-size: 10.5pt; font-weight: normal; mso-spacerun: 'yes'">      </span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">_fastcall:</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">该规范所修饰的函数的实参被直接传递到CPU寄存器中而不是内存堆栈中Q堆栈清退p调用函数负责Q该规范不能用于成员函数?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: -21pt; margin-bottom: 0pt; margin-left: 26.2pt" class="p0"><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">函数必须制定的一个调用规范,特别是在模块之间的逻辑接口中,每个函数原型的调用规范必M其实的调用规范保持一_否则会出现编译连接错误。如果你调用了在某个DLL中实现的COM对象的方法,而这些方法在创徏时却没显式地制定调用规范Q那么它们会使用环境默认的调用规范,虽然你的E序可以通过~译和连接,但是在运行时可能导致程序崩溃?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">所以,凡是接口函数都必L式地制定其调用规范,除非接口函数是类的非静态成员函敎ͼ如果不显式制定调用规范,cȝ静态成员函数和全局函数采用C++/C默认的函数调用规范或者由工程讄指定的调用规范,因此最好也为静态成员函数显式地指定调用规范?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">注意Q类的静态成员函数的默认调用规范不是thiscallQ类的友元函数的调用也不是thiscallQ它们都是由函数本n指定或者由工程讑֮的。COM接口的方法都指定_stdcall调用规范Q而我们自己开发COM对象及接口时也可以指定其他的调用规范?/span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 10.5pt; margin-bottom: 0pt; margin-left: 5.25pt" class="p0"><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">一定要知道C基础的基本概念:</span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"> </span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">认识函数堆栈Q?/span><span><a ><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; text-decoration: underline; mso-spacerun: 'yes'">http://www.lirenedu.org/index.php?ack=xinwen&id=1026</span></a></span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt; margin-left: 5.2pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">ZC语言基础概念Q?/span><span><a ><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; text-decoration: underline; mso-spacerun: 'yes'">http://www.lirenedu.org/index.php?ack=xinwen&id=1024</span></a></span><span style="font-family: 'Arial'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; mso-spacerun: 'yes'">操作pȝ几个基本要点Q?/span><span><a ><span style="font-family: '宋体'; font-size: 10.5pt; font-weight: bold; text-decoration: underline; mso-spacerun: 'yes'">http://www.lirenedu.org/index.php?ack=xinwen&id=1029</span></a></span></p><!--EndFragment--><img src ="http://m.shnenglu.com/happem/aggbug/189234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/happem/" target="_blank">happem</a> 2012-09-03 10:55 <a href="http://m.shnenglu.com/happem/archive/2012/09/03/189234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STL容器元素数据满哪些条ghttp://m.shnenglu.com/happem/archive/2012/08/27/188415.htmlhappemhappemMon, 27 Aug 2012 06:03:00 GMThttp://m.shnenglu.com/happem/archive/2012/08/27/188415.htmlhttp://m.shnenglu.com/happem/comments/188415.htmlhttp://m.shnenglu.com/happem/archive/2012/08/27/188415.html#Feedback0http://m.shnenglu.com/happem/comments/commentRss/188415.htmlhttp://m.shnenglu.com/happem/services/trackbacks/188415.html一?/span>可默认构造的Q也卛_?/span>public?/span>default constructorQ不论是用户昑ּ定义q是~译器默认的Q但是用户定义的带参?/span>constructor会Ԓ制编译器合成default constructorQ实际上qM情况下Q意一U容器要求其元素cd满q一条gQ特别是兌式容器,因ؓ只有序列式容器的某些函数才可能明地或隐含地使用元素cd?/span>default constructorQ如果你不调用这L成员函数Q编译器׃需要元素类型的默认构造函数?/span>

二?/span>可拷贝构造和拯赋值的Q既hpublic?/span>copy constructor?/span>copy assignment operatorQ不论是~译器默认还?/span>operatorQ如果没有显式定义它的话Q这个条件可归结为:元素必须是拷贝的Q但实际上拷贝赋值的要求也不是强制的Q原因和default constructorcM?/span>

三?/span>hpublic?/span>destructorQ不论是~译器默认的q是用户昑ּ定义的?/span>

四?/span>对于兌式容器,要求其元素必L可比较的?/span>

Auto_ptr满上述条g吗?臛_满前三条,因此臛_可以作ؓ序列式容器的元素Q如果ؓauto-ptr定义了比较运符的话Q应该还可以把它作ؓ兌式容器的元素?/span>

但是auto_ptr的特Ҏ接管和{UL有权Q而不是像原始指针那样可以׃n实值对象,?/span>auto_ptr在初始化时接实值对象和拥有权,而在拯时会交出实值对象及其拥有权?/span>

因此Q?/span>auto_ptr对象和它的拷贝不会共享实值它的拷贝ƈ不相同,然而根?/span>STL容器D义的要求Q可拯构造意味着一个着把一个对象赋值给另一个同cd对象生两个相同的对象Q显Ӟauto_ptr不能满q一要求Q与上面l论矛盾Q那么问题出在哪里呢Q?/span>

在揭开auto_ptr的之前需要了?/span>copy constructor?/span>copy assignment operatorQ的几种合法形式QQ何一个类都允怸UŞ式的copy constructorQ?/span>

  C(const C©)Q?/span>

  CQ?/span>Q;

同样Q?/span>copy assignment operator允许cM的两UŞ式?/span>

 C& operator=Q?/span>const C ©Q;

 C& operator=Q?/span>C & copyQ;

实际上,׃copy assignment operator为普通的q算W重载成员函敎ͼ因此q可以定义下列Ş式赋值函敎ͼ

 C&operator=Q?/span>C copyQ;

如果要防止用h一些不合适的对象攑օ容器中,p求对象的设计和是实现者用一些语a支持但不常用的特征,也就是说Q要能够在编译阶D就Lq种h潜在危险性的行ؓQ常用的Ҏ是q其违?/span>C++静态类型安全规则?/span>

源处Q?a >http://www.lirenedu.org/index.php?ack=xinwen&id=1178 


happem 2012-08-27 14:03 发表评论
]]>
异常处理的原?/title><link>http://m.shnenglu.com/happem/archive/2012/08/23/188043.html</link><dc:creator>happem</dc:creator><author>happem</author><pubDate>Thu, 23 Aug 2012 06:39:00 GMT</pubDate><guid>http://m.shnenglu.com/happem/archive/2012/08/23/188043.html</guid><wfw:comment>http://m.shnenglu.com/happem/comments/188043.html</wfw:comment><comments>http://m.shnenglu.com/happem/archive/2012/08/23/188043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/happem/comments/commentRss/188043.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/happem/services/trackbacks/188043.html</trackback:ping><description><![CDATA[<p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">传统的错误处理是用不同的数值来表示不同cd的错误,其表达能力很有限Q因Z个数字包含的信息量太,?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">C++</span><span><a ><span style="font-family: '宋体'; color: rgb(0,0,255); font-size: 10.5pt; text-decoration: underline; mso-spacerun: 'yes'">异常处理机制</span></a></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">异常类型化Q显然一个类型要比一个数字包含的信息量大得多?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">比如我们常用的函?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">fopen(),</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">当打开文gp|是返?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">NULL</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q按照传l的错误处理ҎQ在调用</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Fopen()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">后立x查其q回|如果?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">NULL</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">p行错误处理,如果返?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">NULL</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">改ؓ抛出异常</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">OpenFailed</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q那么我们就不用在调?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">fopen()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">后马上检查返回|而是在调用函数内部或者更高层的调用者那里设|异常处理器来捕莯个异常,</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">C++</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">保证Q如果一个异常在抛出Ҏ有得到处理,那么它将一直抛向上层调用者,直至</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">main()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">函数Q直到找C个类型匹配的异常处理器,否则调用</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">terminate()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">l束E序?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">可以看出Q?/span><span style="font-family: '宋体'; color: rgb(255,0,0); font-size: 10.5pt; mso-spacerun: 'yes'">异常处理机制实际上是一U运行时通知机制?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Class DevidedByZero{}</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Double Devide</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">double a</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">double b</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> {</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21.75pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">If</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">abs(b)<std< span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q:</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">numeric_limits<double></span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q:</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">epsilon()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21.75pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> {</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">   Throw DevidedByZero()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">//</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">提前异常发生条件ƈ抛出自定义异?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">    Return a/b;            //</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">q才是可能真正发出错误的地方</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">}</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Void test()</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 21pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> {</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 31.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Double x=100,y=20.5</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 31.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Try{</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 31.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">   Cout<<devide(x,y)<<endl;  span <><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">抛出异常</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">DevidedByZero</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 31.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">}</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 31.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Catch</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">DevidedByZero&</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">Q?/span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">{</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 31.5pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"> Cerr<< “ Devided by zero!”<<endl;< span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 42pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">}</span><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'"><O:P></O:P></span></p> <p style="margin-top: 0pt; text-indent: 5.25pt; margin-bottom: 0pt" class="p0"><span style="font-family: '宋体'; font-size: 10.5pt; mso-spacerun: 'yes'">}<br /></span></p></span></span></span><img src ="http://m.shnenglu.com/happem/aggbug/188043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/happem/" target="_blank">happem</a> 2012-08-23 14:39 <a href="http://m.shnenglu.com/happem/archive/2012/08/23/188043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C基础Q内存耗尽怎么办?http://m.shnenglu.com/happem/archive/2012/08/21/187824.htmlhappemhappemTue, 21 Aug 2012 02:03:00 GMThttp://m.shnenglu.com/happem/archive/2012/08/21/187824.htmlhttp://m.shnenglu.com/happem/comments/187824.htmlhttp://m.shnenglu.com/happem/archive/2012/08/21/187824.html#Feedback0http://m.shnenglu.com/happem/comments/commentRss/187824.htmlhttp://m.shnenglu.com/happem/services/trackbacks/187824.html 如果在申请动态内存时找不到够大的连l字节内存块Q?/span>malloc()?/span>new()会用不同的方式宣告内存甌p|Q通常有如下几U方式处?#8220;内存耗尽”问题Q?/span>

1.         判断指针是否?/span>NULLQ如果是则立ȝreturn语句l止本函数。例如:

Void Func(void)

 {

     A *a=new(nothrow) AQ?/span>

     IfQ?/span>a==NULLQ?/span>returnQ?/span>

     ……

}

2.         判断指针是否?/span>NULLQ如果是则立ȝexit(1)l止整个E序的运行,例如Q?/span>

Void FuncQ?/span>voidQ?/span>

 {

     A *a=new(nothrow) AQ?/span>

     IfQ?/span>a==NULLQ?/span>exit(1)Q?/span>

}

3.         ?/span>new?/span>malloc()预设异常处理函数Q例如,Visual C++可以?/span>_set_new_hander函数?/span>new讄用户自定义异常处理函敎ͼ也可以让malloc()享用?/span>new相同的异常处理函数?/span>

4.         捕获new抛出的异常,q尝试从中恢复?/span>

 上述(1)和(2Q两U方式用最普通。如果一个函数内有多处需要动态申请内存,那么方式(1)显得力不从心,应该用方式(2Q来处理。不q在C++中我们提倡用方?/span>(4)?/span>

 有一个很重要的现象要告诉大家Q?/span>

    对于32位以上的应用E序而言Q一般情况下使用malloc()?/span>new几乎不可能导?#8216;内存耗尽’。我?/span>windows98下用Visual C++~写了测试程序:

 q个E序无休地运行下去,Ҏ不会l止Q因?/span>32位操作系l支?#8216;虚存’Q内存用完了Q自动用gI间替?/span>

   Void mainQ)

{  

     Int *p=NULLQ?/span>

     Unsigned int len=1024*1024Q?/span>

     WhileQ?/span>1Q?/span>{

        P=new(nothrow) int[len]Q?/span> //或?/span> malloc(sizeof(int)*len)Q?/span>

         If(!p){

           Len>>=1;                //len~小一?/span>

         IfQ?/span>len==0Q?/span>

         Exit(1)Q?/span>

        ContinueQ?/span>

}

 Cout<<AllocatedQ?#8221;<<“Q?/span>len*sizeof(int)Q?#8221;<<bytes.<<endlQ?/span>

}

}

可以得出一个结论:

   对于32位以上应用程序,内存耗尽错误处理E序几乎毫无用处Q但是必d调不加错误处理将DE序的质量很差,千万不可因小失大?/span>



happem 2012-08-21 10:03 发表评论
]]>
þþþһƷ| Ҳȥþۺ| ˹ھƷþþþһ| þþƷ| þ޹ӰԺվ| ޾Ʒ99þ| þù˾Ʒ鶹| þwwƷw˳| þAvԴվ| þۺϳDž| Ʒþþ㽶| þþƷAVһ| þ޾ƷƷ | 99þþƷѿ| þþۺϾɫ۹| þùӾƷŮ| ˾þ777777| þƵ| ޹þþþƷ| ƷþùƷ99| ˾þۺ| þþоƷĻ| þþ뾫Ʒպ˳| ޾Ʒþþþϼ| ˹ھƷþþþһ| Ӱһþþþó˾Ʒۺ| þþþþþۺ| þAV뾫Ʒ| þҹҹݺ| պŷþþwwwۺ | þۺϸþúݺ97ɫ| þùƷ| þۺ͵͵ɫ| AëƬþ| ŷպĻþ| ŷþۺ| ҹƷþþþþþþ| þƵۿ| þAV뾫Ʒɫҹ | 99reþþƷҳ2020| ҹҹþݺ|