函式中的指標分配的記憶體怎麼釋放
被呼叫函式裡動態分配的記憶體要不要手動釋放 20
我想手動釋放來著,但是指標是在被呼叫函式裡宣告的,在呼叫函式裡釋放不了。
我的被呼叫函式返回的就是這個指標,我也不能在被呼叫函式裡釋放。
我的被呼叫函式返回的就是這個指標,我也不能在被呼叫函式裡釋放。
你指的“動態分配”是系統自動分配記憶體,如 char c[100];
還是手動分配的,如 char *p = (char *)malloc(100);
如果是第一種方式,則不需要手動釋放。
第二種方式,釋放時需要制定記憶體區域的指標,如free(p)。如果你在呼叫函式裡手動分配了記憶體,那麼需要將記憶體指標返回,然後再釋放。
如
1
2
3
4
5
6
7
8
9
10
|
char
* proc1() { char
*p = ( char
*) malloc (100); retrun p; } void
proc2() { char
*p = proc1(); //呼叫 proc1 free (p); } |
其他
都看糊塗了,你的意思是如下程式碼嗎?
int* Func2(void)
{
int *p = new int(0);
return p;
}
void Func(void)
{
int *p = Func();
delete p;
p = NULL;
}
如果是如上程式碼,不可能釋放不了,堆是屬於整個程式的,在堆中申請的記憶體在任何地方都可以釋放.
int* Func2(void)
{
int *p = new int(0);
return p;
}
void Func(void)
{
int *p = Func();
delete p;
p = NULL;
}
如果是如上程式碼,不可能釋放不了,堆是屬於整個程式的,在堆中申請的記憶體在任何地方都可以釋放.
我看的是C 被呼叫函式裡的變數不是本地變數嗎,它在函式結束時是不是自動刪除的。而不用手動釋放。
首先,被呼叫函式裡的變數是線上程棧中分配的,在離開作用域裡自動回收這是沒錯的.但這裡的自動變數是指標P,而不是指標所指向的記憶體,這裡是有區別的,指標P所佔用的記憶體當然會自動回收,但指標所指的記憶體是由malloc分配的,這是在程式的預設堆裡分配的,必須用free回收(不過就算沒呼叫free程式結束時也會由作業系統回收). 從你發出的程式碼來看是完全沒有問題的,不知道你說的不能釋放是什麼意思.
相關文章
- 記憶體的分配與釋放,記憶體洩漏記憶體
- C++ Vector怎麼樣釋放記憶體,通過swap()函式C++記憶體函式
- vector 避免記憶體頻繁分配釋放與手動釋放vector記憶體記憶體
- C/C++記憶體分配以及釋放C++記憶體
- 核心記憶體分配常用函式使用記憶體函式
- 關於C++ delete 來釋放new分配的記憶體C++delete記憶體
- Golang記憶體分配內建函式之new函式Golang記憶體函式
- 簡單分配和釋放記憶體指令碼[更新]記憶體指令碼
- vector 的記憶體釋放記憶體
- 二維陣列的動態記憶體分配和釋放 (轉)陣列記憶體
- c語言野指標與結構體指標動態記憶體分配小解C語言指標結構體記憶體
- Rust中的函式指標Rust函式指標
- 從記憶體分配策略(堆、棧)的角度分析,函式傳遞指標真的比傳值效率高嗎?記憶體函式指標
- C++ 類的記憶體分配是怎麼樣的?C++記憶體
- win10為硬體保留的記憶體怎麼釋放 win10取消為硬體保留的記憶體怎麼操作Win10記憶體
- C/C++——C和C++怎樣分配和釋放記憶體,區別是什麼?C++記憶體
- c和指標中關於動態分配記憶體malloc和qsort的一個例子指標記憶體
- 記憶體動態分配與釋放,malloc和new區別記憶體
- 講講怎麼列舉MmMapViewInSystemSpace分配的記憶體View記憶體
- malloc,calloc,realloc等記憶體分配函式區別記憶體函式
- 正確釋放Vector的記憶體記憶體
- C++中的動態記憶體與智慧指標C++記憶體指標
- Oracle記憶體中的幾個重要監控指標Oracle記憶體指標
- C/C++使用malloc為結構體陣列分配記憶體(及free釋放記憶體)的三種方法C++結構體陣列記憶體
- C#中的函式指標 (轉)C#函式指標
- 誰建立誰銷燬,誰分配誰釋放——JNI呼叫時的記憶體管理記憶體
- RAII:在類的建構函式中分配資源,在解構函式中釋放資源AI函式
- 【不在混淆的C】指標函式、函式指標、回撥函式指標函式
- 【C/C++】記憶體分配函式:malloc,calloc,realloc,_allocaC++記憶體函式
- Linux釋放記憶體及手動釋放Oracle共享記憶體段Linux記憶體Oracle
- C指標與記憶體指標記憶體
- Delphi 記憶體與指標記憶體指標
- 衡量記憶體閒忙程度的指標記憶體指標
- Netty 中的記憶體分配淺析Netty記憶體
- XCode釋放記憶體XCode記憶體
- linux釋放記憶體Linux記憶體
- golang 釋放記憶體機制的探索Golang記憶體
- 指向函式的指標函式指標