首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言malloc和free的有关问题

2012-04-18 
C语言malloc和free的问题do{/*do something*//*begin to malloc*/a(int**)malloc(num*sizeof(int*))for(

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++)

热点排行