以下代码段的作用是什么?

时间:2018-07-15 16:02:35

标签: c while-loop malloc

以下代码段做什么?

#include <stdio.h>
#include <stdlib.h>

int main(){
    int num=0;
    while(malloc(1<<10)) ++num;
}

1 个答案:

答案 0 :(得分:1)

首先,1<<10是一个可以在编译时计算的表达式,它等于1024。所以您的代码等效于

#include <stdlib.h>

int main()
{
    int num=0;
    while(malloc(1024)) ++num;
}

因此,它的工作是分配1024个字节的内存块,直到分配失败为止。每次num的值增加一。

变量num的溢出将导致未定义行为,因为它是带符号的。但是,由于您没有使用该变量,因此可能会对其进行优化。