读书人

关于在函数内用malloc申请内存,在函数

发布时间: 2012-03-28 15:40:03 作者: rapoo

关于在函数内用malloc申请内存,在函数外free的问题....
各位大侠,请问我下面的那段代码会不会产生内存泄漏???

static int UI_read_info(int number, char ***info);

int main(int argc, char* argv[])
{

char **info=NULL;
UI_read_info(20, &info);
for(int i=0; i<20; i++) // 释放申请的内存空间
{
free(info[i]);
}
free(info);
info=NULL;

return 0;

}


static int UI_read_info(int number, char ***info)
{
char temp_str[100]="";
int str_len=0,i=0,j=0;

/*** 读取文本的内容 ***/
FILE *fp1=NULL;
fp1=fopen("D:\\123.txt","r");
if(fp1 != NULL)
{
char **temp_pointer=NULL;
temp_pointer=(char **)malloc(sizeof(char *) * number); // 申请内存空间
if(temp_pointer==NULL) // 申请内存空间失败则退出
{
fclose(fp1);
return -1;
}
for(i=0; i<number; i++)
{
temp_pointer[i]=(char *)malloc(sizeof(char) * 60);
}

fgets(temp_str, 100, fp1); // 从流中读一行字符
while(!feof(fp1) || j<number)
{
str_len=strlen(temp_str);
str_len--;
temp_str[str_len]='\0'; // 去除换行符
strcpy(temp_pointer[j],temp_str);
j++;
fgets(temp_str, 100, fp1); // 从流中读一行字符
}
fclose(fp1);
*info=temp_pointer; // 将堆空间的地址赋值给形参

}

return 0;

}

[解决办法]
对,释放成功不成功那是操作系统的事~~~

探讨

引用:

我的意思是说,我这种写法能不能成功释放函数内所申请的内存?因为free(),没有返回值,无法检测它的执行结果!


该free的free了就行了,成不成功释放,那就是操作系统的事儿了,你管不了的。不过你可以默认为总是释放成功的。

[解决办法]
探讨
引用:

我的意思是说,我这种写法能不能成功释放函数内所申请的内存?因为free(),没有返回值,无法检测它的执行结果!


该free的free了就行了,成不成功释放,那就是操作系统的事儿了,你管不了的。不过你可以默认为总是释放成功的。

读书人网 >C语言

热点推荐