读书人

分配内存 这个循环中 i 为什么会变小呢

发布时间: 2012-06-01 16:46:36 作者: rapoo

分配内存 这个循环中 i 为什么会变小呢? 看了半天也没发现为什么……
我的代码

C/C++ code
#include <pthread.h>#include <stdlib.h>#include <stdio.h>int main(){    int *p[1024*100];    int i = 0;        int ii = -1;    while((p[i++]=malloc(1024*1024*100)) != NULL)    {        printf("p+i is %ld , i is %d\n",p+i,i);        if(i<ii)        {            exit(0);        }        ii = i;    }    int q = 0;    scanf("%d",&q);    printf("out now ,exit()");    exit(0);    return 0;}


然后终端显示出:
……
p+i is 140734931560360 , i is 102385
p+i is 140734931560368 , i is 102386
p+i is 140734931560376 , i is 102387
p+i is 140734931560384 , i is 102388
p+i is 140734931560392 , i is 102389
p+i is 140734931560400 , i is 102390
p+i is 140734931560408 , i is 102391
p+i is 140734931560416 , i is 102392
p+i is 140734931560424 , i is 102393
p+i is 140734931560432 , i is 102394
p+i is 140734931560440 , i is 102395
p+i is 140734931560448 , i is 102396
p+i is 140734931560456 , i is 102397
p+i is 140734931560464 , i is 102398
p+i is 140734931560472 , i is 102399
p+i is 140734931560480 , i is 102400
p+i is 140734931560488 , i is 102401
p+i is 140734930748488 , i is 901
……

有兄弟看出原因了吗? 唉 我越来越笨了啊……


[解决办法]
int *p[1024*100];

p+i is 140734931560488 , i is 102401
p+i is 140734930748488 , i is 901

最后一次循环的时候,p数组已经越界了,导致不能预期的结果发生。

读书人网 >C语言

热点推荐