有些東西我不明白,請賜教。使用Corba string_dup與使用指向const的指針
以下(客戶端代碼)有區別嗎? 1)blah =(const char *)「dummy」; 2)blah = CORBA :: string_dup(「dummy」);
...只是用google搜索一下我看到string_dup()返回一個char *,所以2可能是等價的。 我在想2)做2個深拷貝而不是1個。
我現在發問了,請簡單確認一下。
謝謝!
有些東西我不明白,請賜教。使用Corba string_dup與使用指向const的指針
以下(客戶端代碼)有區別嗎? 1)blah =(const char *)「dummy」; 2)blah = CORBA :: string_dup(「dummy」);
...只是用google搜索一下我看到string_dup()返回一個char *,所以2可能是等價的。 我在想2)做2個深拷貝而不是1個。
我現在發問了,請簡單確認一下。
謝謝!
const char* blah = "dummy";
C++編譯器會在可執行文件的數據部分的某處生成一個常量數組,其字符數爲空值。 blah
獲取一個指向它的指針。
char* blah = CORBA::string_dup("dummy");
函數string_dup()
被調用,該參數是指向該常量字符數組的指針。 string_dup()
然後從空閒存儲中分配內存並將字符串數據複製到free-store分配的內存中。指向免費存儲器的指針返回給調用者。當完成CORBA::string_free()
時,處理內存是來電者的工作。從技術上講,允許ORB實現使用一些特殊的免費商店,但很可能它只是使用應用程序其餘部分所使用的標準堆/免費商店。
它往往是更好的做到這一點:
CORBA::String_var s = CORBA::string_dup("dummy");
的String_var
的析構函數會自動調用string_free()
時s
超出範圍。
is this javacorb? – Makah 2013-02-14 12:00:48
這是Orbix Corba impl(C++)。 – 2013-02-17 09:41:39