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