读书人

C语言malloc和free的有关问题

发布时间: 2012-04-18 15:01:59 作者: rapoo

C语言malloc和free的问题
do{
/*do something*/
/*begin to malloc*/
a=(int**)malloc(num*sizeof(int*));
for(i=0;i<num;i++)
a[i]=(int*)malloc((num-i)*sizeof(int));
/*do something*/
/*begin to free*/
for(i=0;i<num;i++)
{
free(a[i]);
a[i]=NULL;
}
free(a);
}while(str!=NULL);
在循环第二次时就会出错。请问要多次分配该怎么办?realloc想过,但是因为num是变化的,a[i]上就不好用realloc了。

[解决办法]
应该错在其他地方.
还有,出错是指什么错误?
[解决办法]
这个是我直接复制你的代码进行的测试,执行了五分钟也没有错误。- -#

C/C++ code
int main()  {      int **a , num = 10;    int i = 0 ;    int str =1;    do{        /*do something*/        /*begin to malloc*/        a=(int**)malloc(num*sizeof(int*));        for(i=0;i<num;i++)            a[i]=(int*)malloc((num-i)*sizeof(int));        /*do something*/        /*begin to free*/        for(i=0;i<num;i++)        {            free(a[i]);            a[i]=NULL;        }        free(a);    }while(str!=NULL);    return 0;  }
[解决办法]
2楼正解,你应该是其他的代码处问题了。这段代码是没问题的。你应该提供更多的信息。
[解决办法]
for(j=1;j<5-i;j++)

==>
for(j=1;j<num-i;j++)

读书人网 >C语言

热点推荐