子函式的指標釋放問題
C語言中遇到一個這樣的問題:子函式中malloc了一個指標儲存資料,作為該子函式的返回值,return到主函式。
那麼這個指標應該在哪裡釋放呢?
顯然不能在子函式裡釋放,否則返回值沒有意義。這樣就應該在主函式裡釋放,主函式裡申請一個指標,指向這個返回值,使用之後釋放。
更好的做法:在主函式裡申請一段記憶體空間,初始化為0,傳入子函式中對資料進行修改,不設返回值。該指標指向的資料傳回主函式使用,使用完畢後釋放。誰申請誰釋放,比較清晰。
相關推薦
子函式的指標釋放問題
C語言中遇到一個這樣的問題:子函式中malloc了一個指標儲存資料,作為該子函式的返回值,return到主函式。 那麼這個指標應該在哪裡釋放呢?  
子函式中為指標分配空間
#include <stdio.h> #include <malloc.h> typedef struct node{ int data; struct node *next; }Node,*Linklist; void my_malloc(Linklis
【C++】子函式返回結構體的程式碼 及 字串常量傳入子函式的指標實現
說明: 1. 下面的子函式 getStu 裡,傳入了三個引數: 字串指標 char * name 整型變數 int k_year; char * k_sex; 2. 當把字串作為引數傳遞給子函式時,主程式中可以使用字串常量,但子函式的形參只能使用字元型指標 char
在子函式中malloc分配記憶體和free釋放記憶體的方法(基於C)
1. 子函式malloc分配記憶體 為了增強程式可讀性,有時會在子函式中malloc分配記憶體。測試瞭如下三種方法,容易想到的是第一種。事實證明這種也是錯誤的! #include <stdio.h> #include &l
C語言 子函式返回一個區域性指標變數的疑惑
輸出結果如下圖: 我的分析: 記憶體分佈圖如下圖: 當子函式返回後,區域性變數已經超出了作用域啊,為什麼在main()函式中還能通過指標rp間接訪問變數x呢??為什麼第一次訪問可以輸出12,第二次訪問就記憶體釋放了呢,輸出一個隨機數????
函式指標、回撥函式與 GObject 閉包 GObject 子類物件的析構過程 GObject 的訊號機制——概覽
手冊所述,GObject 訊號(Gignal)主要用於特定事件與響應者之間的連線,它與作業系統級中的訊號沒有什麼關係。例如,當我向一個檔案中寫入資料的時候,我期望能夠有一個或多個函式響應這個“向檔案寫入資料”的事件,這一期望便可基於 GObject 訊號予以實現。 為了更好的理解 GObje
子函式使用二級指標返回二維陣列的值
使用二級指標返回二維陣列的值 一直以來都不會將函式的結果以陣列的形式返回,今天終於碰巧解決了! 函式功能:功能十分簡單,實現兩個二維陣列的減法,並將結果以陣列的形式返回。 void ** SubA
子函式返回陣列(指標和結構體)
一般用void的話就是沒有返回值和不需要返回值的了,如呼叫一個輸出函式,這個函式就沒必要返回了,事實上這個函式只管輸出就好了,也沒有什麼值要返回的,另一種是用指標傳址的時候,因為你傳的是地址,函式根據你的地址直接對資料進行操作了,這是就不需要返回值了。 因為對資料的操作在
利用函式指標實現父類函式呼叫子類函式
父子類關係 對於繼承關係中的父類和子類,我們可以說子類是父類的一種,子類繼承了父類的屬性和行為。因此,子類可以訪問父類的所有非私有成員。相反,父類一般情況下是不能訪問子類成員的。然而,我們可以通過一些方法間接的實現父類訪問子類,即父類函式訪問子類函式。
C++:舉例說明如何使用enable_if和模板的函式指標引數
下面的這個例子主要實現如下功能: 當引數為資料型別時,呼叫std::to_string()方法將數值轉化為字串並輸出。 當引數為std::string型別時,直接使用std::string的值輸出。 當引數為物件時,如果物件中含有std::s
【C/C++開發】函式指標與回撥函式
C++很多類庫都喜歡用回撥函式,MFC中的定時器,訊息機制,hook機制等待,包括現在在研究的cocos2d-x中也有很多的回撥函式。 1.回撥函式 什麼是回撥函式呢?回撥函式其實就是一個通過函式指標呼叫的函式!假如你把A函式的指標當作引數傳給B函式,然後在B函式中通過A函式傳進來的這個指標
小結下:Maltba中的匿名函式,函式函式,子函式以及feval函式
1:匿名函式 引數 函式體 %匿名函式 [email protected](x)sin(x); y1=myfun1(0); y2=myfun1(0:0.01:2*pi); plot(y2) 變數空間結果為: 2:子函式 見註釋 functi
typedef函式指標
轉載部落格:https://blog.csdn.net/qll125596718/article/details/6891881 1.簡單的函式指標的應用 形式1:返回型別(*函式名)(引數表) char (*pFun)(int); char glFun(
c的函式指標
都說c語言的核心是函式,那麼如何寫一個函式? 確定函式功能,要求職責儘量單一 分析已知,未知(已知:引數,常量) 寫出函式頭 步驟分析(虛擬碼,或流程圖) 編碼 除錯 main函式的引數: int ma
子函式改全域性變數前要先宣告(一般不這樣用)
school = "Oldboy edu."def change_name(name): global school #改全域性變數前要先宣告 print('before change',name,school) school = "YunNan University" na
指標函式 AND 函式指標 AND 函式指標陣列 AND 指向函式指標陣列的指標
指標函式 形如“指標陣列”,“指標函式”是一個“函式”,函式的返回型別是指標。 定義 型別識別符號 *函式名(引數表) char *reverse(char *left, char *right); reverse是一個函式,它的返回型別是一個字元
156_深入理解指標—>指標函式與函式指標的區別
深入理解指標—>指標函式與函式指標的區別 2014年11月16日 20:13:46 _Tham 閱讀數:884 標籤: C語言指標指標陣列指標函式函式指標指標的指標更多 個人分類: C/C++ 版權宣告:本文為博主原創文章,未經博主
C++學習筆記2_函式.函式指標
1. 行內函數void printAB(int a,int b){ cout<<(a)<<(b)<<endl;}int main(void){ for(int i=0;i<1000;i++) { int j=i+1; printAB(i,j
函式指標(指向函式的指標)和指標函式的區別
函式指標和指標函式的區別: 一、【函式指標】 在程式執行中,函式程式碼是程式的演算法指令部分,它們和陣列一樣也佔用儲存空間,都有相應的地址。可以使用指標變數指向陣列的首地址,也可以使用指標變數指向函式程式碼的首地址,指向函式程式碼首地址的指標變數稱為函式指標。 1、函式指標定義 函式型別(*
函式指標和函式指標型別
參考:https://blog.csdn.net/candyliuxj/article/details/6339414 函式指標 1. 定義 每一個函式都佔用一段記憶體單元,它們有一個起始地址,指向函式入口地址的指標稱為函式指標。