malloc()打破循环

Aan*_*Aan -2 c heap

为什么下面的代码直接显示Mb占用的堆:

int Mb = 0;
while ( malloc(1<<20)) ++Mb;
printf("Allocated %d Mb total\n", Mb);
Run Code Online (Sandbox Code Playgroud)

是什么意思1<<20

Dan*_*her 6

是什么意思1<<20

A 1向左移动20位,也称为2 ^ 20 = 1048576. <<是向左移位的位移算子.


Cra*_*lus 6

它意味着2^20哪个是1 MB.所以它计算MB的数量