看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC2005 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我在VS2005下按F5 malloc所宣告的有成功釋放掉(release\debug都是) 但直接到release下,執行 XXX.exe 程式在中途記憶體都沒有釋放掉 一直到執行完才放掉 是我哪裡設定出了問題了嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.104.111
EdisonX:放碼? 06/10 12:26
int main(void){ int M=1000,N=1000,n=1000; double** B= (double**) malloc (M * sizeof(double *)); for( i = 0; i < M; i++){ B[i] = (double *) malloc (N1 * sizeof(double)); } function(B,n); for(int i=0;i<N1;i++){ free(B[i]); } free(B); //多一段去要記憶體 M1= (double *) malloc ( 1 * sizeof(double)); free(M1); M1=MULL; //多這三行程式就自動放出來了 system("pause");/*暫停功能*/ return 0; } 在VS2005下執行完 記憶體吃了63M 但直接點exe 記憶體吃了100M <--win 7沒有馬上free掉?(我可以要求馬上嗎?) 剛剛試直接點exe記憶體少吃了10M 剩90M 也就是win 7馬上free malloc的東西 ※ 編輯: wope 來自: 220.133.104.111 (06/10 13:10)
kiedveian:有可能是function的問題,gcc沒跑funcion才不到2M 06/10 15:15
purincess:為什麼B陣列在malloc的時候是M個 但是free的時候是N1個 06/10 17:19
purincess:阿@@ 06/10 17:20
littleshan:雖然沒有立刻就free,但別的程式要吃記憶體時就會給它 06/11 10:01
littleshan:而且如果你馬上接著malloc的效能也會比較好 06/11 10:02
littleshan:一般狀況並不需要OS立刻釋放所有記憶體 06/11 10:03
wope:感謝litt大 後面加個malloc問題就解決了 06/12 03:15
※ 編輯: wope 來自: 220.133.104.111 (06/12 03:28) ※ 編輯: wope 來自: 220.133.104.111 (06/12 03:29)
EdisonX:推一個 :) 06/12 08:27