如何查看你可以分配多大內存
#include <stdio.h> #include <stdlib.h> int main(void){ int MB = 0; while(malloc(1 << 20)) ++MB; printf("Allocated %d MB total\n", MB); return EXIT_SUCCESS; }
原理,因為2的20次方就是1MB(2的10次方為1KB,2的30次方為1GB,以此類推)。
如果你請求分配的內存塊小于1MB,你得到的內存是否比這要多一些呢?為什么?
答:
這不是絕對的!
在本例中使用
1<<22(4MB)得到的結果乘4是2000MB
1<<21(2MB)得到的結果乘2是1972MB
1<<20(1MB)得到的結果是1918MB
1<<19(0.5MB)得到的結果除2是1812MB
1<<18(0.25MB)得到的結果除4是2003MB
1<<17(0.125MB)得到的結果除8是2034MB
顯然出現了一個意外的結果。
posted on 2009-05-25 01:37 volnet 閱讀(499) 評論(0) 編輯 收藏 引用 所屬分類: C/C++