[問題] 關於free在 exe檔的釋放問題

看板C_and_CPP (C/C++)作者 (獨立黑色色彩)時間14年前 (2012/06/10 12:09), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
開發平台(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

06/10 12:26, , 1F
放碼?
06/10 12:26, 1F
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)

06/10 15:15, , 2F
有可能是function的問題,gcc沒跑funcion才不到2M
06/10 15:15, 2F

06/10 17:19, , 3F
為什麼B陣列在malloc的時候是M個 但是free的時候是N1個
06/10 17:19, 3F

06/10 17:20, , 4F
阿@@
06/10 17:20, 4F

06/11 10:01, , 5F
雖然沒有立刻就free,但別的程式要吃記憶體時就會給它
06/11 10:01, 5F

06/11 10:02, , 6F
而且如果你馬上接著malloc的效能也會比較好
06/11 10:02, 6F

06/11 10:03, , 7F
一般狀況並不需要OS立刻釋放所有記憶體
06/11 10:03, 7F

06/12 03:15, , 8F
感謝litt大 後面加個malloc問題就解決了
06/12 03:15, 8F
※ 編輯: wope 來自: 220.133.104.111 (06/12 03:28) ※ 編輯: wope 來自: 220.133.104.111 (06/12 03:29)

06/12 08:27, , 9F
推一個 :)
06/12 08:27, 9F
文章代碼(AID): #1Fr1tSVC (C_and_CPP)
文章代碼(AID): #1Fr1tSVC (C_and_CPP)