[問題] malloc & free
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
問題(Question):
想請教各位一個問題
我寫了一個很簡單的測試程式
內容就是malloc一塊記憶體(250MB)之後再free掉
但是這樣的動作在不同的平台上卻會有不同結果
平台1 : windows server 2003 32bit
可正常完全釋放所有記憶體
平台2 : windows server 2008 32bit
無法正常完全釋放所有記憶體(約留下22MB)
但是如果這時執行另一個測試程式將記憶體大量malloc吃到快光
此時程式就會慢慢釋放那些沒釋放的記憶體
平台3 : windows server 2008 64bit
可正常完全釋放所有記憶體
想請問這是甚麼原因造成的(是否windows本身的機制造成?)
以及是否有方法可以避免這樣的現象
謝謝
程式碼如下 :
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
int main( void )
{
char *string[1000][250];
int i, j;
for(i = 0; i < 250; i++){
for(j = 0; j < 1000; j++){
string[j][i] = (char *)malloc( 1000 );
}
}
for(i = 0; i < 250; i++){
for(j = 0; j < 1000; j++){
free(string[j][i]);
}
}
scanf("%d", &i);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.208.4
→
04/18 13:56, , 1F
04/18 13:56, 1F
→
04/18 14:00, , 2F
04/18 14:00, 2F
→
04/18 14:01, , 3F
04/18 14:01, 3F
→
04/18 14:02, , 4F
04/18 14:02, 4F
→
04/18 14:03, , 5F
04/18 14:03, 5F
→
04/18 14:03, , 6F
04/18 14:03, 6F
→
04/18 14:05, , 7F
04/18 14:05, 7F
→
04/18 14:06, , 8F
04/18 14:06, 8F
→
04/18 14:07, , 9F
04/18 14:07, 9F
→
04/18 14:08, , 10F
04/18 14:08, 10F
→
04/18 14:10, , 11F
04/18 14:10, 11F
→
04/18 14:17, , 12F
04/18 14:17, 12F
→
04/18 14:35, , 13F
04/18 14:35, 13F
→
04/18 14:51, , 14F
04/18 14:51, 14F
→
04/18 15:03, , 15F
04/18 15:03, 15F
→
04/18 15:47, , 16F
04/18 15:47, 16F
→
04/18 15:53, , 17F
04/18 15:53, 17F
→
04/18 15:53, , 18F
04/18 15:53, 18F