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