→ 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