C 函式中new一塊記憶體,作為返回值,什麼時候,怎麼釋放

時間 2021-09-12 00:09:21

1樓:♂凡鳥

//首先你要知道你這樣做是很不安全的。你想要釋放的話一定要用一個指標來接收,然後用這個指標來delete。如果你的函式被直接使用,比如cout<

using namespace std;

char * aaa()

char * bbb()

int main()

2樓:匿名使用者

char * ch ="aaa", 也可以作為返回值。沒有問題的。

雖然ch是區域性變數,儲存在棧中,但它指向的「aaa 」是常量,屬於靜態分配,儲存在靜態儲存區,函式跳出時常量也不會被釋放,釋放的只是ch 變數,它存的只是「aaa 」的地址,但它已經返回給主函式接收了,它釋放了沒關係,所以主函式同樣可以接收「aaa」。

3樓:超級多執行緒

印象不太深了, 和你一起關注下吧...

剛才做了個測試

在主函式裡 寫了個這個, char *p = (char*) malloc( 10 * sizeof(char) );

直接返回,居然不報記憶體洩露- - ` 神奇...

c++函式返回值問題

4樓:匿名使用者

(1)函式的返回值是通過函式中的return語句獲得的。return語句將被呼叫函式中的一個確定值帶回主調函式中去。

如果需要從被呼叫函式帶回一個函式值(供主調函式使用),被呼叫函式必須包含return語句。如果不需要從被呼叫函式帶回函式值,則可以不要return語句。

一個函式中可以有一個以上的return語句,執行到哪一個return語句,哪一個語句起作用。

return語句後面的括號可以要,也可以不要,如「return z;」與「return (z);」等價。return後面的值可以是一個表示式。例如:

int max(int x,int y)

如果在主調函式中呼叫它,比如:

a=max(1,2)

那麼函式max的return語句後面表示式的值就是2,也就是說max(1,2)=2,所以a=2

(2)函式值的型別。既然函式有返回值,這個值當然應屬於某一個確定的型別,應當在定義函式是指定函式值的型別。例如下面是幾個函式的部首:

int max(float x,float y);//函式值為整型

char letter(char c1,char c2);//函式值為字元型

double min(int x,int y);//函式值為雙精度型

void change(int a);//函式值為空

(3)如果函式值的型別和return語句中表示式的值不一致,則以函式型別為準,即函式型別決定返回值的型別。對數值型資料,可以自動進行型別轉換。特別提一提void型別,如果一個函式的型別為void,那麼,即使函式中有return語句且return語句中表示式的值不為空,返回值仍為空,嚴格滿足函式型別決定返回值的型別。

5樓:97樂於助人

因為主函式裡面呼叫了grade函式,而grade函式裡面有輸出語句,所以會有書上的結果。

並不是返回給了主函式值。

6樓:匿名使用者

.返回值是具體將值返回到定義函式時的行參上嗎?不是的,而是在函式的名稱前加上資料型別不過請注意:

返回值型別和所呼叫的引數的型別可以不一致....需要向樓主說明的一點是如何取得這個函式的返回值:我寫的比較多,不讓我發,說我重複字元太多了,你看我空間吧,答案在那裡,我不會刪的:

希望我的回答對你有幫助:)

7樓:匿名使用者

void 不必要return

int 型別 一定要return

int max (int,int)

8樓:匿名使用者

void createwaybilllist(waybill *& head1,banci *& head2)

高中函式問題!函式這一塊的題怎麼感覺繞來繞去的,抓不到頭緒

1全部y x 根號 1 x平方 兩邊平方得y平方 x平方 1 x平方 1 1 1 x平方 即y平方 1 1 1 x平方 所以1 x平方 1 1 y平方 x y 根號 1 y平方 y 負無窮,0 f x 的反函式 x 根號 1 x平方 x 負無窮,0 解析式為 f x x x 1 定義域為 1,學習的...

c中如何將迭代器作為函式的預設引數使用

額。這個。你傳入迭代器指標就ok了。初始化為null如 void fun std vector iterator piter null 寫個簡單的例子 include include void f std vector iterator piter null else void main 可以啊,迭...

c語言指標作為函式變數怎麼用,c語言 編一程式 交換兩個變數的值(用指標做函式引數)

最大的寶寶 在函式exe中,應該用指標來改變它指向的值,而不單純改變指標的值。因為這個指標只是一個拷貝,改變它的值毫無意義 void exe int p,int q int main return 0 void exe int p,int q include void exe int p,int q...