以下代码段的作用是什么?
#include <stdio.h>
#include <stdlib.h>
int main(){
int num=0;
while(malloc(1<<10)) ++num;
}
首先,1<<10
是一个可以在编译时计算的表达式,它等于1024。所以你的代码相当于
#include <stdlib.h>
int main()
{
int num=0;
while(malloc(1024)) ++num;
}
因此,它所做的是分配1024字节的内存块,直到失败为止。每次,num
的值都会增加一。
溢出变量num
将导致未定义的行为,因为它是有符号的。但是,由于您没有使用该变量,因此可能会对其进行优化。