<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>大卫的思维空间</title><link>http://blog.vckbase.com/billdavid/</link><description>自由的国度，思维的空间......</description><managingEditor>大卫的思维空间</managingEditor><dc:language>af</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>大卫的思维空间</dc:creator><title>Java RPC通信机制之SOAP：应用Apache Axis进行Web Service开发</title><link>http://blog.vckbase.com/billdavid/archive/2006/08/18/21982.html</link><pubDate>Fri, 18 Aug 2006 14:42:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/08/18/21982.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/21982.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/08/18/21982.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/21982.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/21982.html</trackback:ping><description>SOAP原意为Simple Object Access Protocol（简单对象访问协议），是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议。本文以Apache Axis 1.4为基础，讨论了SOAP开发Web Service的基本内容。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/21982.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>Java RPC通信机制之XML-RPC：Apache XML-RPC 3.0开发简介</title><link>http://blog.vckbase.com/billdavid/archive/2006/08/18/21981.html</link><pubDate>Fri, 18 Aug 2006 14:35:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/08/18/21981.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/21981.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/08/18/21981.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/21981.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/21981.html</trackback:ping><description>XML-RPC是一种简单的，轻量级的通过HTTP协议进行RPC通信的规范。本文以Apache XML-RPC 3.0为基础，对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析。

&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/21981.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>Java RPC通信机制之RMI</title><link>http://blog.vckbase.com/billdavid/archive/2006/08/18/21980.html</link><pubDate>Fri, 18 Aug 2006 14:33:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/08/18/21980.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/21980.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/08/18/21980.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/21980.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/21980.html</trackback:ping><description>简要介绍Java RPC通信机制RMI的基本原理，应用过程中可能遇到的问题及其解决办法。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/21980.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>体验CORBA组件模型CCM：2、实例</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/18/20161.html</link><pubDate>Thu, 18 May 2006 00:52:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/18/20161.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20161.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/18/20161.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20161.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20161.html</trackback:ping><description>通过一个简单的实例，详细介绍基于CIAO的CCM组件开发过程。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20161.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>体验CORBA组件模型CCM：1、引言</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/18/20160.html</link><pubDate>Thu, 18 May 2006 00:47:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/18/20160.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20160.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/18/20160.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20160.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20160.html</trackback:ping><description>在比较CORBA2.x与CORBA3.x的基础上，简要介绍CCM引入的新特性。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20160.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 9.Postscript（后记）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20037.html</link><pubDate>Fri, 12 May 2006 09:34:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20037.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20037.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20037.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20037.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20037.html</trackback:ping><description>这是整个系列的最后一篇，对整个系列及该系列未涵盖的内容进行了总结，同时对CORBA及分布式对象计算技术的发展状况进行了简单分析。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20037.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 8.Event Service（事件服务）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20036.html</link><pubDate>Fri, 12 May 2006 09:31:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20036.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20036.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20036.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20036.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20036.html</trackback:ping><description>事件服务（Event Service）通过在通信的双方甚至是多方间引入一个第三方――Event Channel，一定程度上解除Client和Server之间的耦合关系，在通信的过程中，任意一方只需与Event Channel打交道，而无需确切知道对方的存在，从而使得二者由一对一的关系变成多对多的关系。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20036.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 7.IIOP（体验IIOP－－一个Java作客户端的例子）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20035.html</link><pubDate>Fri, 12 May 2006 09:29:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20035.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20035.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20035.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20035.html</trackback:ping><description>CORBA2.0引入的IIOP（Internet Inter-ORB Protocol）是GIOP（General Inter-ORB Protocol）针对TCP/IP协议的一个实现，IIOP使得不同ORB间可以相互访问，同时也使得基于不同ORB的复杂分布式应用成为可能。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20035.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 6.Naming Service（使用命名服务）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20034.html</link><pubDate>Fri, 12 May 2006 09:26:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20034.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20034.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20034.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20034.html</trackback:ping><description>命名服务（Naming Service）是CORBA定义的诸多服务中比较常用的一个， Naming Service提供的助记符解析服务使得应用程序可以借助助记符，而不是一大串IOR来访问到相应的Servant。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20034.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 5.Hello World（简单实例）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20033.html</link><pubDate>Fri, 12 May 2006 09:22:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20033.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20033.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20033.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20033.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20033.html</trackback:ping><description>前面对CORBA编程的基础知识进行了简单介绍，本篇中，我们将实例讲解如何利用TAO中进行CORBA编程。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20033.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 4.Basic Functions（常用基本方法解析）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20032.html</link><pubDate>Fri, 12 May 2006 09:16:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20032.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20032.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20032.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20032.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20032.html</trackback:ping><description>&lt;H1 style="MARGIN: 12pt 0in 3pt; TEXT-ALIGN: center" align=center&gt;&lt;FONT size=5&gt;&lt;FONT face=Arial&gt;CORBA Programming with TAO - 4.Basic Functions&lt;/FONT&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;（常用基本方法解析）&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;&lt;EM&gt;摘要：&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;简要介绍&lt;/SPAN&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;规范定义的几个常用基本方法的功能及应用中需要注意的问题。&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;&lt;EM&gt;正文：&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;编译器会为每个在&lt;/SPAN&gt;idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中声明的&lt;/SPAN&gt;interface&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;生成一个对应的代理基类：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; InterfaceName;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;以及两个对象引用类型：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;InterfaceName_ptr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;和&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;InterfaceName_var&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;前者是一个指针类型，其定义往往是：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;typedef&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; InterfaceName* InterfaceName;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;因此，不作过多讨论。&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;InterfaceName_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;则是一个智能指针类，通过使用智能指针类，免去了我们手工维护指针引用计数的工作，大大简化了应用程序的编写。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;下面重点对代理基类和&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;智能指针类中的几个基本方法进行简单说明。&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;一、代理基类中定义的几个基本方法&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;每个代理基类（以及&lt;/SPAN&gt;CORBA::Object&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）都提供如下几个静态方法：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_duplicate&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;返回一个参数指针的拷贝（为了免去对象深拷贝所引起的消耗，实际是通过调整引用计数的方法实现的）&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_nil&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;返回相应接口类型的空引用&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_narrow&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;尝试将参数指针转型为目标指针，若转换失败，则返回目标类型的空引用。&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;除了以上静态方法，每个代理类还包括两个方法：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_is_a&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;该方法接收一个类型&lt;/SPAN&gt;id&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;信息&lt;/SPAN&gt;const char *type_id&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，并返回一个&lt;/SPAN&gt;CORBA::Boolean&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，用于判断某个引用是否是&lt;/SPAN&gt;type_id&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;所指示的类型。&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_this&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;该方法返回当前对象的拷贝的引用。&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_add_ref/_remove_ref&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;用于增加引用计数和减小引用计数，在我们编写接口实现时可能会用到（客户程序中无法使用这两个方法，因为只有&lt;/SPAN&gt;Skeleton&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码中会生成这两个方法，客户程序代码也没有必要使用这两个方法来维护引用计数）。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;此外，在&lt;/SPAN&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;命名空间中还定义了：&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;CORBA::is_nil&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;判断某个&lt;/SPAN&gt;ptr&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是否为空&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;CORBA::release&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;释放参数对象。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;而为了比较两个引用是否相同，&lt;/SPAN&gt;CORBA::Object&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中定义了方法：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo6; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;is_equivalent&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;按照&lt;/SPAN&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;规范，不使用以上基本方法对&lt;/SPAN&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象或对象指针进行比较、类型转换、非空测试等所产生的行为都是未定义的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这几个方法本身比较简单，并且后续的文章中将看到上述各基本方法的使用，这里就先不举例了。&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;EM&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;二、&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_var&lt;/FONT&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;智能指针类中的基本方法&lt;/SPAN&gt;&lt;/EM&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;按照&lt;/SPAN&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;规范，每个&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;智能指针类都包括如下几个方法：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: 'Courier New'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;in&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: 'Courier New'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;out&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: 'Courier New'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;inout&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: 'Courier New'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;_retn&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l4 level1 lfo1; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-FAMILY: Symbol; mso-bidi-font-family: 'Courier New'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;ptr&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;掌握这几个方法的最简单的方法是学习&lt;/SPAN&gt;CORBA::String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的实现。&lt;/SPAN&gt;CORBA::String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是&lt;/SPAN&gt;CORBA::String&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的智能指针类，其中封装了一个&lt;/SPAN&gt;char*&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;指针。我们来看看&lt;/SPAN&gt;TAO&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;是如何实现这几个方法的（见&lt;/SPAN&gt;%TAO_ROOT%/tao/CORBA_String.inl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/SPAN&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::in (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;const&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *&amp;amp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::inout (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *&amp;amp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::out (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;CORBA::string_free (&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_ = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::_retn (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *temp = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_ = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; temp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;/// TAO extension.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::ptr (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;表面看来似乎没有什么值得注意的，只是返回了几个不同类型的指针：&lt;/SPAN&gt;in&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法返回一个指针（因仅作为传入参数），&lt;/SPAN&gt;inout&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法返回一个指针的引用（因不仅要作我传入参数，还要通过函数调用修改其内容），&lt;/SPAN&gt;out&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法同样返回一个指针的引用（因需要通过函数调用修改其内容），&lt;/SPAN&gt;inout&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法返回一个指针（因仅作为返回参数，不能修改），&lt;/SPAN&gt;ptr&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;也返回一个普通指针，同样也不能修改内容。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;但仔细看一看&lt;/SPAN&gt;_retn&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的实现，你会发现，该方法首先保存了指针的内容，然后将指针清&lt;/SPAN&gt;0&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;（这样当&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被释放时就不会&lt;/SPAN&gt;free&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;原来的地址空间），最后将该指针返回。也就是说，通过该方法调用，&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象所指向的地址空间的控制权被交给了调用该方法的一方，同样，释放地址空间的工作也应该由调用该方法的一方来完成。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;而对于&lt;/SPAN&gt;out&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法，为了保证原指针被安全释放，该方法先释放原来指向的地址空间，并将指针清&lt;/SPAN&gt;0&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，最后返回该指针的引用。因此，被调用的方法内部应负责为该对象分配空间，而释放该空间的工作则是由调用方完成的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;其他对象上述方法的实现与&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在原理上是基本一致的，只是&lt;/SPAN&gt;IDL&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;编译器&lt;/SPAN&gt;tao_idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在生成&lt;/SPAN&gt;stub&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;skeleton&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码时会分别为定长结构体和变长结构体应用不同的类模板，从而生成不同类型的&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类。对于定长结构体，应用的类模板为&lt;/SPAN&gt;TAO_Fixed_Var_T&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，而对于变长结构体，应用的类模板为&lt;/SPAN&gt;TAO_Var_Var_T&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。二者的区别在于对于定长结构体而言，&lt;/SPAN&gt;_retn&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;和&lt;/SPAN&gt;out&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法与&lt;/SPAN&gt;inout&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法的实现是一样的，没有清&lt;/SPAN&gt;0&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的过程，以下是&lt;/SPAN&gt;TAO_Fixed_Var_T&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;模板类中的相关代码：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;// Mapping for fixed size.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;template&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;lt;&lt;SPAN style="COLOR: blue"&gt;typename&lt;/SPAN&gt; T&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;T &amp;amp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;TAO_Fixed_Var_T&amp;lt;T&amp;gt;::out (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; *&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;template&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;lt;&lt;SPAN style="COLOR: blue"&gt;typename&lt;/SPAN&gt; T&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;T&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;TAO_Fixed_Var_T&amp;lt;T&amp;gt;::_retn (&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; *&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;关于&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类的更多信息，可参考&lt;/SPAN&gt;%TAO_ROOT%/tao/VarOut_T.inl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，或：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://www.dre.vanderbilt.edu/Doxygen/Current/html/tao/classTAO__Var__Var__T.html"&gt;http://www.dre.vanderbilt.edu/Doxygen/Current/html/tao/classTAO__Var__Var__T.html&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://www.dre.vanderbilt.edu/Doxygen/Current/html/tao/classTAO__Fixed__Var__T.html"&gt;http://www.dre.vanderbilt.edu/Doxygen/Current/html/tao/classTAO__Fixed__Var__T.html&lt;/A&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;&lt;EM&gt;三、典型问题解析&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上面简单介绍了&lt;/SPAN&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;编程中常用的几个基本方法，下面在此基础上对内存管理相关的几个问题进行简要分析。&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol; mso-bidi-font-family: 'Times New Roman'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;包含变长成员变量的结构体的内存释放问题&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;以下面的&lt;/SPAN&gt;idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为例：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; DemoStruct {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string name_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;对于如下的代码：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;int&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; main() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DemoStruct_var demo = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; DemoStruct;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;demo.name_ = CORBA::string_dup(&lt;SPAN style="COLOR: maroon"&gt;"Hello"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;由于我们使用了&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;智能指针类，通过&lt;/SPAN&gt;new&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;动态分配的空间会在&lt;/SPAN&gt;demo&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象被销毁时被释放，但是其中通过&lt;/SPAN&gt;CORBA::string_dup&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;为成员变量&lt;/SPAN&gt;name_&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;所分配的空间是否会泄漏呢？&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;答案是：不会。这是因为&lt;/SPAN&gt;idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件中结构体的&lt;/SPAN&gt;string&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;成员变量经过&lt;/SPAN&gt;tao_idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;编译后，被映射为&lt;/SPAN&gt;TAO_String_Manager&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，这种类型与&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;基本是一样的，只是&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;不带任何参数的构造函数会将指针&lt;/SPAN&gt;ptr_&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;初始化为&lt;/SPAN&gt;0&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，而&lt;/SPAN&gt;TAO_String_Manager&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;不带任何参数的构造函数则会将&lt;/SPAN&gt;ptr_&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;初始化成一个空字符串，具体可见&lt;/SPAN&gt;%TAO_ROOT%/tao/Managed_Types.i&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;及&lt;/SPAN&gt;%TAO_ROOT%/tao/CORBA_String.inl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;因此，当结构体被释放时，我们就无需为其中的&lt;/SPAN&gt;string&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的释放问题担心。对于其它包含变长类型的结构体而言，情况是一样的。&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;_var&lt;/FONT&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;类使用的误区&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在使用&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;时有一个问题需要注意，&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;提供了三个构造函数（见&lt;/SPAN&gt;%TAO_ROOT%/tao/CORBA_String.h&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）&lt;/SPAN&gt;:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::String_var (&lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *p)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;: ptr_ (p)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;ACE_INLINE&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::String_var (&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt; *p)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;: ptr_ (CORBA::string_dup (p))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;CORBA::String_var::String_var (&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; CORBA::String_var&amp;amp; r)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;ptr_ = CORBA::string_dup (r.ptr_);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;第一个构造函数仅对指针&lt;/SPAN&gt;p&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;进行浅拷贝，保存到内部的&lt;/SPAN&gt;ptr_&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;中，而后面两个则通过深拷贝来构造&lt;/SPAN&gt;String_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;两种不同的构造方式区别虽然比较小，但可能引起一些十分隐蔽的问题。如下面的代码就存在问题：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;String_var str(&lt;SPAN style="COLOR: maroon"&gt;"Hello"&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;因为上述代码会使用第一个而不是第二个构造函数来构造&lt;/SPAN&gt;str&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;，从而使得&lt;/SPAN&gt;str&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;获得静态地址空间&lt;/SPAN&gt;"Hello"&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的控制权，并在&lt;/SPAN&gt;str&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被析构时尝试释放该空间，这显然是错误的。要避免该错误，我们应该总是强制使用第二个构造函数，或在构造&lt;/SPAN&gt;Stirng_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象前主动复制&lt;/SPAN&gt;String&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的内容，如：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;String_var str1((&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt;*)&lt;SPAN style="COLOR: maroon"&gt;"Hello"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;String_var str2(CORBA::string_dup(&lt;SPAN style="COLOR: maroon"&gt;"Hello"&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;除非你清楚地知道第一个构造函数是你需要的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对于其它&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;类型而言，不存在与上面第二种构造方式等价的构造函数，我们总是使用第一种形式的构造函数，即新构造的&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象会获得指针的控制权。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;与上面第三种构造方式类似，如果你传入的是一个&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;引用，则使用的是如下的构造函数：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;template&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;lt;&lt;SPAN style="COLOR: blue"&gt;typename&lt;/SPAN&gt; T&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;TAO_Var_Base_T&amp;lt;T&amp;gt;::TAO_Var_Base_T (&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt; TAO_Var_Base_T&amp;lt;T&amp;gt; &amp;amp; p)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;: ptr_ (p.ptr_ ? &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; T (*p.ptr_) : 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;该构造函数会对传入的&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;引用进行深拷贝。&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN: 12pt 0in 3pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l2 level1 lfo5; tab-stops: list .25in"&gt;&lt;SPAN style="FONT-WEIGHT: normal; FONT-FAMILY: Symbol; mso-bidi-font-family: 'Times New Roman'"&gt;&amp;#183;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;对远程方法调用内存管理问题的解释&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;CORBA&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;内存分配&lt;/SPAN&gt;/&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;释放的原则很简单：各自负责自己分配空间的释放，&lt;/SPAN&gt;C/S&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;两端内存的分配与释放（以及更新）不会自动通知另一方。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对于&lt;/SPAN&gt;Client&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码而言，由&lt;/SPAN&gt;Client&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;代码负责释放的空间还包括&lt;/SPAN&gt;ORB&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在&lt;/SPAN&gt;unmarshalling&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;期间创建的&lt;/SPAN&gt;Server&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的指针的镜像，即&lt;/SPAN&gt;Server&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;端指针的本地拷贝，这些空间可能是&lt;/SPAN&gt;out/inout&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;参数或者作为接口方法的返回值通过方法调用获得的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;这在理解上应该没有什么问题。但是，其中对于&lt;/SPAN&gt;Server&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方的内存管理，我们没有考虑。以如下代码为例：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;DemoStruct* DemoIntf::foo() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DemoStruct_var var = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; DemoStruct;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; var._retn();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;当函数返回时，&lt;/SPAN&gt;Client&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方&lt;/SPAN&gt;ORB&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会通过&lt;/SPAN&gt;unmarshalling&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;创建一个该指针所指内存区域的镜像，然后访问该指针，最后由&lt;/SPAN&gt;Client&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方负责该区域的释放；但是我们说过，&lt;/SPAN&gt;C/S&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;双方分配和释放内存并不会自动通知另一方，对于&lt;/SPAN&gt;Server&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方而言，由于&lt;/SPAN&gt;_retn&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方法会释放原&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象对其&lt;/SPAN&gt;ptr_&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;指针所指地址空间的控制权，原来由&lt;/SPAN&gt;_var&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对象所管理的空间似乎变得失去了控制，那么这一部分内存是否会泄漏呢？&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;同样，答案是不会，这是因为&lt;/SPAN&gt;ORB&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;在将该指针进行&lt;/SPAN&gt;marshalling&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;并传递给&lt;/SPAN&gt;Client&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;后，会负责指针所指空间的释放，同样对于&lt;/SPAN&gt;in&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/SPAN&gt;out&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;、&lt;/SPAN&gt;inout&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;参数的管理也是类似的。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;结合上面对&lt;/SPAN&gt;Server&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;方内存管理方式的讨论，我们来看看下面的例子。&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;对于如下的&lt;/SPAN&gt;idl&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;文件：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; DemoStruct {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;string name_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;interface&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; DemoIntf {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DemoStruct get();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;有类似下面的实现：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt; DemoIntf : ...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DemoStruct_var demo_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DemoStruct* get() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; demo_;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;上述实现初看起来可以正常工作，但是根据上面的讨论，&lt;/SPAN&gt;ORB&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;会释放返回值指针的地址空间，这将导致&lt;/SPAN&gt;demo_&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;被意外释放，最终导致错误的发生。因此，我们应该将实现代码改为：&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;DemoStruct* get() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;::Device::DeviceID_var dev_id = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; ::Device::DeviceID;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dev_id-&amp;gt;device_name = CORBA::string_dup(id_-&amp;gt;device_name);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; dev_id._retn();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'"&gt;而客户方代码的代码是这样的：&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US"&gt;::Device::DeviceID_var device_id = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;-&amp;gt;device_id();&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN: 12pt 0in 3pt"&gt;&lt;SPAN lang=ZH-CN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial"&gt;&lt;EM&gt;参考：&lt;/EM&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .25in"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Michi Henning, Steve Vinoski. Advanced CORBA Programming with C++. Addison-Wesley, 1999.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; mso-list: l3 level1 lfo4; tab-stops: list .25in"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Douglas C. Schmidt &amp;amp; Bala Natarajan. CORBA Tutorial. &lt;A href="http://www.cs.wustl.edu/~schmidt/PDF/corba4.pdf"&gt;http://www.cs.wustl.edu/~schmidt/PDF/corba4.pdf&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20032.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 3.IDL Data Type（数据类型与Mapping）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20027.html</link><pubDate>Fri, 12 May 2006 07:57:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20027.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20027.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20027.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20027.html</trackback:ping><description>简要介绍TAO支持的IDL数据类型及其C++ Mapping关系。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20027.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 2.Compile Source Code（编译ACE/TAO/CIAO）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20026.html</link><pubDate>Fri, 12 May 2006 07:42:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20026.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20026.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20026.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20026.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20026.html</trackback:ping><description>简要介绍如何在Windows平台上编译ACE/TAO/CIAO，及编译过程中需注意的问题。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20026.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>CORBA Programming with TAO - 1.Start（基本概念）</title><link>http://blog.vckbase.com/billdavid/archive/2006/05/12/20025.html</link><pubDate>Fri, 12 May 2006 07:38:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/05/12/20025.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/20025.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/05/12/20025.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/20025.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/20025.html</trackback:ping><description>简要介绍CORBA的基本原理，并解释POA、stub、skeleton、servant等重要概念。&lt;img src ="http://blog.vckbase.com/billdavid/aggbug/20025.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>大卫的思维空间</dc:creator><title>JNI中文处理问题小结</title><link>http://blog.vckbase.com/billdavid/archive/2006/02/13/17657.html</link><pubDate>Mon, 13 Feb 2006 03:34:00 GMT</pubDate><guid>http://blog.vckbase.com/billdavid/archive/2006/02/13/17657.html</guid><wfw:comment>http://blog.vckbase.com/billdavid/comments/17657.html</wfw:comment><comments>http://blog.vckbase.com/billdavid/archive/2006/02/13/17657.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/billdavid/comments/commentRss/17657.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/billdavid/services/trackbacks/17657.html</trackback:ping><description>由于工作关系，需要利用JNI在C&lt;B&gt;&lt;FONT COLOR="#663300"&gt;++&lt;/FONT&gt;&lt;/B&gt;与Java程序之间进行方法调用和数据传递，但以前总是在英文环境下工作，对中文（其他语言编码同理）问题反倒没有太关注，最近抽了点时间研究了一下，将自己的体会整理如下，供大家讨论或参考。&lt;br&gt;&lt;br&gt;在进一步讨论之前，有几点基础知识需要说明：&lt;FONT COLOR="#999900"&gt;&lt;br&gt;1&lt;/FONT&gt;、在Java内部，所有的字符串编码采用的是Unicode即UCS&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;2&lt;/FONT&gt;。Unicode是用两个字节表示每个字符的字符编码方案。Unicode有一个特性：它包括了世界上所有的字符字形。所以，各个地区的语言都可以建立与Unicode的映射关系，而Java正是利用了这一点以达到异种语言之间的转换。&lt;FONT COLOR="#999900"&gt;&lt;br&gt;2&lt;/FONT&gt;、UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;是另一种不同于UCS&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;2&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;UCS&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;4&lt;/FONT&gt;的编码方案，其中UTF代表UCS&amp;nbsp;Transformation&amp;nbsp;Format，它采用变长的方式进行编码，编码长度可以是&lt;FONT COLOR="#999900"&gt;1&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;~&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;3&lt;/FONT&gt;（据说理论上最长可以到&lt;FONT COLOR="#999900"&gt;6&lt;/FONT&gt;，不懂）。&lt;br&gt;由于UCS&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;2&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;UCS&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;4&lt;/FONT&gt;编码定长的原因，编码产生的字符串会包含一些特殊的字符，如&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;0&lt;/FONT&gt;（即&lt;FONT COLOR="#999900"&gt;0x0&lt;/FONT&gt;，所有&lt;FONT COLOR="#999900"&gt;0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;~&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;256&lt;/FONT&gt;的字符Unicode编码的第一个字节），这在有些情况下（如传输或解析时）会给我们带来一些麻烦，而且对于一般的英文字母浪费了太多的空间，此外，据说UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;还有Unicode所没有的纠错能力（不懂！），因此，Unicode往往只是被用作一种中间码，用于逻辑表示。关于Unicode&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;的更多信息，见参考&lt;FONT COLOR="#999900"&gt;1&lt;/FONT&gt;。&lt;br&gt;&lt;br&gt;Java中文乱码问题在很多情况下都可能发生：不同应用间，不同平台间等等，但以上问题已有大量优秀的文章讨论过，这里不作深入探讨，详见参考&lt;FONT COLOR="#999900"&gt;2&lt;/FONT&gt;、&lt;FONT COLOR="#999900"&gt;3&lt;/FONT&gt;、&lt;FONT COLOR="#999900"&gt;4&lt;/FONT&gt;、&lt;FONT COLOR="#999900"&gt;5&lt;/FONT&gt;。下面简要总结一下：&lt;FONT COLOR="#999900"&gt;&lt;br&gt;1&lt;/FONT&gt;、当我们使用默认编码方式保存源文件时，文件内容实际上是按照我们的系统设定进行编码保存的，这个设定值即file&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;encoding可以通过下面的程序获得：&lt;FONT COLOR="#990000"&gt;&lt;br&gt;&lt;br&gt;public&amp;nbsp;class&lt;/FONT&gt;&amp;nbsp;Encoding&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;{&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#990000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&lt;/FONT&gt;&lt;FONT COLOR="#FF6633"&gt;&amp;nbsp;void&lt;/FONT&gt;&lt;FONT COLOR="#990000"&gt;&amp;nbsp;main&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;String&lt;B&gt;&lt;FONT COLOR="#663300"&gt;[]&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;args&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&amp;nbsp;{&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;out&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;println&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;System&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;getProperty&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#009900"&gt;"file.encoding"&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&lt;br&gt;javac在不指定encoding参数时，如果区域设定不正确，则可能造成编&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;解码错误，这个问题在编译一个从别的环境传过来的文件时可能发生。&lt;FONT COLOR="#999900"&gt;&lt;br&gt;2&lt;/FONT&gt;、虽然在Java内部（即运行期间，Runtime）字符串是以Unicode形式存在的，但在&lt;FONT COLOR="#990000"&gt;class&lt;/FONT&gt;文件中信息是以UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;形式存储的（Unicode仅被用作逻辑表示中间码）。&lt;FONT COLOR="#999900"&gt;&lt;br&gt;3&lt;/FONT&gt;、对于Web应用，以Tomcat为例，JSP&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;Servlet引擎提供的JSP转换工具（jspc）搜索JSP文件中用&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;lt;%&lt;/FONT&gt;&lt;/B&gt;@&amp;nbsp;page&amp;nbsp;contentType&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;=&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#009900"&gt;"text/html;&amp;nbsp;charset=&amp;lt;Jsp-charset&amp;gt;"&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;%&amp;gt;&lt;/FONT&gt;&lt;/B&gt;指定的charset。如果在JSP文件中未指定&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;Jsp&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;charset&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;gt;&lt;/FONT&gt;&lt;/B&gt;，则取系统默认的file&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;encoding（这个值在中文平台上是GBK），可通过控制面板的Regional&amp;nbsp;Options进行修改；jspc用相当于&amp;#8220;javac&amp;nbsp;&amp;#8211;encoding&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;Jsp&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;charset&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;gt;&lt;/FONT&gt;&lt;/B&gt;&amp;#8221;的命令解释JSP文件中出现的所有字符，包括中文字符和ASCII字符，然后把这些字符转换成Unicode字符，再转化成UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;格式，存为JAVA文件。&lt;br&gt;我曾经偶然将jsp文件存成UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;，而在文件内部使用的charset却是GB2312，结果运行时总是无法正常显示中文，后来转存为默认编码方式才正常。只要文件存储格式与JSP开头的charset设置一致，就都可以正常显示（不过将文件保存成UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;16&lt;/FONT&gt;的情况下我还没有试验成功）。&lt;FONT COLOR="#999900"&gt;&lt;br&gt;4&lt;/FONT&gt;、在XML文件中，encoding表示的是文件本身的编码方式，如果这个参数设定与文件本身实际的编码方式不一致的话，则可能解码失败，所以应该总是将encoding设置成与文件编码方式一致的值；而JSP&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;HTML的charset则表示按照何种字符集来解码从文件中读取出来的字符串（在理解中文问题时应该把字符串理解成一个二进制或&lt;FONT COLOR="#999900"&gt;16&lt;/FONT&gt;进制的串，按照不同的charset可能映射成不同的字符）。&lt;br&gt;我曾经在网上就encoding的具体含义跟别人讨论过：如果encoding指的是文件本身的编码方式，那么读取该文件的应用程序在不知道encoding设置的情况下如何正确解读该文件呢？&lt;br&gt;根据讨论及个人理解，处理程序（如jspc）总是按ISO8859&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;1&lt;/FONT&gt;来读取输入文件，然后检查文件开始的几个字节（即Byte&amp;nbsp;Order&amp;nbsp;Mark，BOM，具体如何判断，可以参考Tomcat源码$SOURCE_DIR&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;jasper&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;jasper2&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;src&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;share&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;org&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;apache&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;jasper&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;xmlparser&lt;B&gt;&lt;FONT COLOR="#663300"&gt;\&lt;/FONT&gt;&lt;/B&gt;XMLEncodingDetector&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;java的getEncodingName方法，在JSP&amp;nbsp;Specification的Page&amp;nbsp;Character&amp;nbsp;Encoding一节也有详细论述）以探测文件是以何种格式保存的，当解析到encoding选项时，若encoding设置与文件实际保存格式不一致，会尝试进行转换，但这种转换可能在文件实际以ISO8859&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;1&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;等单字节编码而encoding被设置成Unicode、UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;16&lt;/FONT&gt;等双字节编码时发生错误。&lt;br&gt;&lt;br&gt;下面重点讨论JNI中在C&lt;B&gt;&lt;FONT COLOR="#663300"&gt;++&lt;/FONT&gt;&lt;/B&gt;程序与Java程序间进行数据传递时需要注意的问题。&lt;br&gt;在JNI中jstring采用的是UCS&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;2&lt;/FONT&gt;编码，与Java中String的编码方式一致。但是在C&lt;B&gt;&lt;FONT COLOR="#663300"&gt;++&lt;/FONT&gt;&lt;/B&gt;中，字符串是用&lt;FONT COLOR="#FF6633"&gt;char&lt;/FONT&gt;（&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;位）或者&lt;FONT COLOR="#FF6633"&gt;wchar_t&lt;/FONT&gt;（&lt;FONT COLOR="#999900"&gt;16&lt;/FONT&gt;位，Unicode编码与jchar一致，但并非所有开发平台上都是Unicode编码，详见参考&lt;FONT COLOR="#999900"&gt;6&lt;/FONT&gt;），下面的程序证明了这一点（编译环境：VC6）：&lt;FONT COLOR="#000099"&gt;&lt;br&gt;&lt;br&gt;#include&amp;nbsp;&amp;lt;iostream&amp;gt;&lt;br&gt;&lt;/FONT&gt;&lt;FONT COLOR="#990000"&gt;using&amp;nbsp;namespace&lt;/FONT&gt;&amp;nbsp;std&lt;B&gt;&lt;FONT COLOR="#663300"&gt;;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF6633"&gt;&lt;br&gt;&lt;br&gt;int&lt;/FONT&gt;&lt;FONT COLOR="#990000"&gt;&amp;nbsp;main&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;()&lt;br&gt;{&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;locale&amp;nbsp;loc&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#009900"&gt;&amp;nbsp;"Chinese-simplified"&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;);&lt;/FONT&gt;&lt;/B&gt;&lt;I&gt;&lt;FONT COLOR="#999999"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//locale&amp;nbsp;loc(&amp;nbsp;"chs"&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//locale&amp;nbsp;loc(&amp;nbsp;"ZHI"&amp;nbsp;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//locale&amp;nbsp;loc(&amp;nbsp;".936"&amp;nbsp;);&lt;br&gt;&lt;/FONT&gt;&lt;/I&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcout&lt;B&gt;&lt;FONT COLOR="#663300"&gt;.&lt;/FONT&gt;&lt;/B&gt;imbue&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;loc&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;);&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcout&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;lt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#009900"&gt;&amp;nbsp;L"中文"&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;lt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;endl&lt;B&gt;&lt;FONT COLOR="#663300"&gt;;&lt;/FONT&gt;&lt;/B&gt;&lt;I&gt;&lt;FONT COLOR="#999999"&gt;&amp;nbsp;//若没有L，会出问题&lt;br&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;FONT COLOR="#FF6633"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wchar_t&lt;/FONT&gt;&amp;nbsp;wch&lt;B&gt;&lt;FONT COLOR="#663300"&gt;[]&amp;nbsp;=&amp;nbsp;{&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;0x4E2D&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0x6587&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0x0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;};&lt;/FONT&gt;&lt;/B&gt;&lt;I&gt;&lt;FONT COLOR="#999999"&gt;&amp;nbsp;//"中文"二字的Unicode编码&lt;br&gt;&lt;/FONT&gt;&lt;/I&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wcout&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;lt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;wch&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;lt;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;endl&lt;B&gt;&lt;FONT COLOR="#663300"&gt;;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/FONT&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;;&lt;br&gt;}&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&lt;br&gt;JNI提供了几个方法来实现jstring与&lt;FONT COLOR="#FF6633"&gt;char&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;/&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF6633"&gt;wchar_t&lt;/FONT&gt;之间的转换。&lt;br&gt;&lt;br&gt;jsize&amp;nbsp;GetStringLength&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;jstring&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#990000"&gt;&lt;br&gt;const&lt;/FONT&gt;&amp;nbsp;jchar&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;*&lt;/FONT&gt;&lt;/B&gt;GetStringChars&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;jstring&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;jboolean&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;*&lt;/FONT&gt;&lt;/B&gt;isCopy&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF6633"&gt;&lt;br&gt;void&lt;/FONT&gt;&amp;nbsp;ReleaseStringChars&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;jstring&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#990000"&gt;&amp;nbsp;const&lt;/FONT&gt;&amp;nbsp;jchar&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;*&lt;/FONT&gt;&lt;/B&gt;chars&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&lt;br&gt;此外，为了便于以UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;方式进行传输、存储，JNI还提供了几个操作UTF格式的方法：&lt;br&gt;&lt;br&gt;jsize&amp;nbsp;GetStringUTFLength&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;jstring&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#990000"&gt;&lt;br&gt;const&lt;/FONT&gt;&lt;FONT COLOR="#FF6633"&gt;&amp;nbsp;char&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;*&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;GetStringUTFChars&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;jstring&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;jboolean&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;*&lt;/FONT&gt;&lt;/B&gt;isCopy&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF6633"&gt;&lt;br&gt;void&lt;/FONT&gt;&amp;nbsp;ReleaseStringUTFChars&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;jstring&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#990000"&gt;&amp;nbsp;const&lt;/FONT&gt;&lt;FONT COLOR="#FF6633"&gt;&amp;nbsp;char&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;*&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;chars&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&lt;br&gt;GetStringChars返回的是Unicode格式的编码串，而GetStringUTFChars返回的是UTF&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;8&lt;/FONT&gt;格式的编码串。&lt;br&gt;要创建一个jstring，可以用如下方式：&lt;br&gt;&lt;br&gt;jstring&amp;nbsp;NewJString&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;JNIEnv&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;*&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;env&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;LPCTSTR&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;)&lt;br&gt;{&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;(!&lt;/FONT&gt;&lt;/B&gt;env&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;||&amp;nbsp;!&lt;/FONT&gt;&lt;/B&gt;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/FONT&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF6633"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&lt;/FONT&gt;&amp;nbsp;slen&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;=&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;strlen&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;);&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jchar&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;*&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;buffer&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;=&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#990000"&gt;&amp;nbsp;new&lt;/FONT&gt;&amp;nbsp;jchar&lt;B&gt;&lt;FONT COLOR="#663300"&gt;[&lt;/FONT&gt;&lt;/B&gt;slen&lt;B&gt;&lt;FONT COLOR="#663300"&gt;];&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF6633"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&lt;/FONT&gt;&amp;nbsp;len&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;=&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;MultiByteToWideChar&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;CP_ACP&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;strlen&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;str&lt;B&gt;&lt;FONT COLOR="#663300"&gt;),&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;buffer&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;slen&lt;B&gt;&lt;FONT COLOR="#663300"&gt;);&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#FF0000"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;(&lt;/FONT&gt;&lt;/B&gt;len&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;amp;&amp;amp;&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;len&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;slen&lt;B&gt;&lt;FONT COLOR="#663300"&gt;)&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buffer&lt;B&gt;&lt;FONT COLOR="#663300"&gt;[&lt;/FONT&gt;&lt;/B&gt;len&lt;B&gt;&lt;FONT COLOR="#663300"&gt;]&amp;nbsp;=&lt;/FONT&gt;&lt;/B&gt;&lt;FONT COLOR="#999900"&gt;&amp;nbsp;0&lt;/FONT&gt;&lt;B&gt;&lt;FONT COLOR="#663300"&gt;;&lt;/FONT&gt;&lt;/B&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jstring&amp;nbsp;js&lt;B&gt;&lt;FONT COLOR="#663300"&gt;&amp;nbsp;=&lt;/FONT&gt;&lt;/B&gt;&amp;nbsp;env&lt;B&gt;&lt;FONT COLOR="#663300"&gt;-&amp;gt;&lt;/FONT&gt;&lt;/B&gt;NewString&lt;B&gt;&lt;FONT COLOR="#663300"&gt;(&lt;/FONT&gt;&lt;/B&gt;buffer&lt;B&gt;&lt;FONT COLOR="#663300"&gt;,&lt;/FONT&g