有一些我没有得到的,请赐教.
以下(客户端代码)之间是否有区别?1)blah =(const char*)"dummy"; 2)blah = CORBA :: string_dup("dummy");
...只是谷歌搜索我看到string_dup()返回一个char*所以2可能是等价的.我在想2)做2份深拷贝而不是1份.
我现在正在解决这个问题,请简要确认一下.
谢谢!
const char* blah = "dummy";
C++编译器在可执行文件的数据部分中的某处生成一个常量的字符数组,以null结尾.blah获取指向它的指针.
char* blah = CORBA::string_dup("dummy");
string_dup()使用参数调用该函数,该参数是指向该常量字符数组的指针.string_dup()然后从免费存储分配内存并将字符串数据复制到免费存储分配的内存中.指向自由存储内存的指针返回给调用者.完成后处理内存是调用者的工作CORBA::string_free().从技术上讲,允许ORB实现使用一些特殊的免费存储,但很可能只是使用应用程序其余部分正在使用的标准堆/免费存储.
这样做通常要好得多:
CORBA::String_var s = CORBA::string_dup("dummy");
在String_var析构函数会自动调用string_free()时,s超出范围.
| 归档时间: | 
 | 
| 查看次数: | 3090 次 | 
| 最近记录: |