int main(){
int *p;
long n = 1;
while (p!=NULL)
{
n=n+1000000000;
p = (int *)malloc(sizeof(int)*n);
}
if(!p){
printf("%ld\n",n);
printf("hello");
}
return 1;
}
最后得到n为负值,是因为n达到了长整型能到达的最大值时,仍有内存空间可以分配吗?
但为什么把n=n+1000000000的0去掉一个之后就能得到n为正值
(都输出了hello)
初学数据结构,感谢大家
long的范围是 -2147483648~2147483647,数据过大,只是显示会有问题,但是内存没有占用过大,因为一个long也就4字节
这里将 long n = 1;
改成 long long n = 1;
数据越界,不代表把所有的内存都占用了。