当前位置:  技术问答>linux和unix

free问题,麻烦大家给指点一下。代码在文章内容中

    来源: 互联网  发布时间:2015-12-31

    本文导语:  file_t *file_create(char *name, uint32_t size, uint8_t ver) { if (name!=NULL) {     fd=creat(name,0600);     if (fd!=-1)     { lseek(fd,0,SEEK_SET); file_t * tempfile_t; tempfile_t=(file_t *)malloc(sizeof(file_t));              char * in...

file_t *file_create(char *name, uint32_t size, uint8_t ver)
{
if (name!=NULL)
{
    fd=creat(name,0600);
    if (fd!=-1)
    {
lseek(fd,0,SEEK_SET);
file_t * tempfile_t;
tempfile_t=(file_t *)malloc(sizeof(file_t));
             char * inbuf=NULL;
             if(inbuf==NULL)
             {
inbuf=(char *)malloc(size*sizeof(char));
memset(inbuf,'*',size);
             }
             write(fd,inbuf,size);
             if(inbuf!=NULL)
             {
free(inbuf);
             }
             inbuf=NULL;
             char * outbuf=NULL;
             if(outbuf==NULL)
             { 
outbuf=(char *)malloc(size*sizeof(char));
             }
read(fd,outbuf,size);
strcpy(tempfile_t->name,name);
tempfile_t->size=size;
tempfile_t->buffer=outbuf;
tempfile_t->ver=ver;
if(outbuf!=NULL)
                  {
free(outbuf);
                  }
outbuf=NULL;
// free(tempfile_t);
return tempfile_t;
    }
    else
            {
return NULL;
    }
        }
else
{
return NULL;
}
}
问题就是我给结构体tempfile_t指针malloc一块区域后,tempfile_t作为返回值。所以没有办法free掉它。见注释行。我现在想在另一函数中比如file_close函数中释放他,但是好像又不可能。希望大家给个方法,把tempfile_t指针free掉。函数参数跟结构体的结构是不能改的。有什么方法吗?

|
老实说你的代码是一团糟!不知道你想干什么

malloc和free在代码中应该搭配出现的:分配一片内存就应当有一个释放这块内存的操作,不能多次释放同一个内存块,当然少释放在你现在的代码量中也许不会出现什么错误!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用gdb查错,发现一个由free引起的段错误,但我的代码(c++)中根本没有用到free啊?
  • 谁懂free-radius代码呀
  • free()时出错,大家帮我看看代码哪里出问题了
  • lock free 时用的 atomic_cas代码
  • 基于malloc与free函数的实现代码及分析
  • java命名空间java.sql接口array的类成员方法: free定义及介绍
  • 请问为什么会出现glibc detected *** free()?
  • java命名空间java.sql接口clob的类成员方法: free定义及介绍
  • free_irq为什么失败?
  • java命名空间java.sql接口blob的类成员方法: free定义及介绍
  • XML编辑器 Serna Free
  • java命名空间java.sql接口sqlxml的类成员方法: free定义及介绍
  • Free Chart Geany
  • java命名空间javax.sql.rowset.serial类serialblob的类成员方法: free定义及介绍
  • free 和malloc的问题
  • java命名空间javax.sql.rowset.serial类serialclob的类成员方法: free定义及介绍
  • double free or corruption(out)
  • java命名空间javax.swing.plaf.metal类metalscrollbarui的类成员方法: free_standing_prop定义及介绍
  • 最近程序老是在malloc或者free内存的时候崩溃或者失去响应,请教高手。
  • linux下free命令显示的内存使用情况分析
  • free出错
  • 可以用free来释放共享内存吗?
  • Avast Free Antivirus
  • 日志文件分析工具 Free-SA
  • Free Simple CMS
  • Free Simple Shop


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3