当我编译并运行以下代码时:(在cygwin上使用gcc)
int *a = malloc(1024*1024*100*sizeof(int));
while(1)
;
Run Code Online (Sandbox Code Playgroud)
Windows XP中的任务管理器将此进程的内存使用量显示为2232K,根据我的说法应该大约为400000K.
当我编译并运行以下代码时:(在cygwin上使用gcc)
int *a = malloc(1024*1024*400*sizeof(int));
while(1)
;
Run Code Online (Sandbox Code Playgroud)
内存使用量降至1388K;
因此,它实际上显示出下降,而不是显示出增长.
有什么可以解释这个?
您已经分配了内存,使其可用,但尚未使用它(从/向它读取或写入).内存管理器可能还没有实际为你的程序分配物理内存,只是说你可以拥有它.如果你在刚分配的内存中写一些内容(例如用0填充它 - 看看memset),我希望内存使用量更符合你的预期.
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |