函式中的指標分配的記憶體怎麼釋放
被呼叫函式裡動態分配的記憶體要不要手動釋放 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/C++記憶體分配以及釋放C++記憶體
- C++ 指標動態記憶體分配C++指標記憶體
- 怎麼手動在rstudio中釋放記憶體?記憶體
- Golang記憶體分配內建函式之new函式Golang記憶體函式
- vector 的記憶體釋放記憶體
- c語言野指標與結構體指標動態記憶體分配小解C語言指標結構體記憶體
- 從記憶體分配策略(堆、棧)的角度分析,函式傳遞指標真的比傳值效率高嗎?記憶體函式指標
- C++ 類的記憶體分配是怎麼樣的?C++記憶體
- C中的記憶體分配模型記憶體模型
- 講講怎麼列舉MmMapViewInSystemSpace分配的記憶體View記憶體
- C++ - 二級指標動態記憶體申請與釋放C++指標記憶體
- Rust中的函式指標Rust函式指標
- win10為硬體保留的記憶體怎麼釋放 win10取消為硬體保留的記憶體怎麼操作Win10記憶體
- Netty 中的記憶體分配淺析Netty記憶體
- XCode釋放記憶體XCode記憶體
- C/C++使用malloc為結構體陣列分配記憶體(及free釋放記憶體)的三種方法C++結構體陣列記憶體
- 誰建立誰銷燬,誰分配誰釋放——JNI呼叫時的記憶體管理記憶體
- C語言記憶體管理,分配、使用、釋放以及安全性C語言記憶體
- 指標函式 和 函式指標指標函式
- 【不在混淆的C】指標函式、函式指標、回撥函式指標函式
- 如何主動釋放 HeapIdle 的記憶體API記憶體
- golang 釋放記憶體機制的探索Golang記憶體
- 指標:存放記憶體地址的變數指標記憶體變數
- [譯].Net中的記憶體-什麼分配在了哪裡記憶體
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- typedef void (*Fun) (void) 的理解——函式指標——typedef函式指標函式指標
- .Net記憶體管理釋放的兩種方式記憶體
- C語言的記憶體分配C語言記憶體
- win10如何設定自動釋放記憶體_win10怎麼設定自動清理系統垃圾釋放記憶體Win10記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- cpp:"函式指標"的方法函式指標
- C++中函式指標與函式物件C++函式指標物件
- Netty 中的記憶體分配淺析-資料容器Netty記憶體
- 記憶體分配策略中,堆和棧的區別記憶體
- Java中物件並不是都在堆上分配記憶體的。Java物件記憶體
- 4.非連續式記憶體分配記憶體
- 垃圾收集器與記憶體分配策略_記憶體分配策略記憶體