原 函式返回乙個指標以及返回STL物件的問題

2021-09-22 09:30:57 字數 798 閱讀 7934

1.

關於某函式返回指標問題:

1

int *func(inta)2

67int *c = func(array);

看上面的這個例子,指標b在函式func內沒有被釋放。在ios裡面,一般的措施是 return [b autorelease]; 編譯器會自動跟蹤b物件的使用情況,自動釋放。但在c/c++裡面是沒有autorelease機制的。那怎麼辦呢?我們要明確乙個問題,在上面的例子中,是肯定會發生記憶體洩露的。處理的方法是,在呼叫的地方,對接收者進行釋放,即在使用完c指標後,對c進行釋放:

delete c;  2.

函式返回vector物件的問題:

vector<int> func(void)

以上這樣表達是可以的,雖然在func函式內部,value只是乙個區域性物件,但是在返回的時候,在碰到return把value臨時物件銷毀前, 系統會呼叫vector的拷貝建構函式,對vector的所有元素拷貝乙份,生成臨時物件,傳給外部。所以說,這種方法只適用於vector比較小的情況。對於vector比較大的情況,應該把vector的引用作為形參傳給函式,無返回值:

voidfunc(vector<int> & value)

C 做乙個返回陣列指標的函式

這個問題我已經不是第一次遇到了,由於不是總程式設計,所以總會忘記這一點 在c 中是不允許陣列作為函式的返回值的 所以想要函式返回乙個陣列,那麼只能返回這個陣列的指標,然後在想呼叫這個陣列的函式中新建指標然後呼叫這個函式。舉個例子 生成含有範圍屬於 begin,end 的188個隨機整數的陣列 int...

oracle 函式返回乙個集合

create or replace function text starttime in varchar2,endtime in varchar2,timetype in number,spid in number,pagesize in number,currentpage in number,d...

函式返回乙個SqlDataReader物件

解決方法 1.嘗試使用dataset 2.執行資料庫操作命令 sqldatareader reader mysqlcommand.executereader commandbeh ior.closeconnection 示例 原 獲取書的目錄 public sqldatareader getbook...