毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> linux >> 正文

free(): invalid next size (fast)

更新时间:2015-11-28:  来源:毕业论文

#include"unp.h"

int main()
{
   int f;
   const char *fpath="test2";
   mode_t fattrib;
   struct stat *buf=malloc(sizeof(stat));      //动态分配结构体*buf的内存
   fattrib=S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;

   f=creat(fpath,fattrib);       //创建一个文件并设置权限
   if(f==-1)
   {
      puts("文件创建失败!");
      return 1;
   }
   else
   puts("文件创建成功!");
   fstat(f,buf);              //通过文件标识符获取访问权限
   if(buf->st_mode & S_IRUSR)
     puts("让所有者拥有读权限!");
  /*  if(!(buf->st_mode & S_IXUSR))
    puts("所有者没有执行权限!");  */
    if(buf->st_mode & S_IRGRP)
    puts("群组拥有读权限!");
    close(f);
    chmod(fpath,0771);     //修改该文件的权限
    stat(fpath,buf);        //通过路径获取访问权限
    if(buf->st_mode & S_IWUSR)
    puts("让所有者拥有写权限!");
    if(buf->st_mode & S_IWGRP)
    puts("群组拥有写权限!");
    if(buf->st_mode & S_IXUSR)
    puts("所有者有执行权限!");
    free(buf);
    return 0;
}

用gcc编译后没错误,运行后出现如下错误:

[tsj@tangshaojie xx 18:52]$ gcc -o 2 2.c
[tsj@tangshaojie xx 18:54]$ ./2
文件创建成功!
让所有者拥有读权限!
群组拥有读权限!
让所有者拥有写权限!
群组拥有写权限!
所有者有执行权限!
*** glibc detected *** ./2: free(): invalid next size (fast): 0x09f5e008 ***
======= Backtrace: =========
/lib/libc.so.6(+0x70e31)[0x1bce31]
/lib/libc.so.6(+0x73571)[0x1bf571]
./2[0x8048658]
/lib/libc.so.6(__libc_start_main+0xe6)[0x162d26]
./2[0x8048481]
======= Memory map: ========
0014c000-002dd000 r-xp 00000000 08:02 785932     /lib/libc-2.12.so
002dd000-002df000 r--p 00191000 08:02 785932     /lib/libc-2.12.so
002df000-002e0000 rw-p 00193000 08:02 785932     /lib/libc-2.12.so
002e0000-002e3000 rw-p 00000000 00:00 0
005bb000-005d8000 r-xp 00000000 08:02 785909     /lib/libgcc_s-4.4.7-20120601.so.1
005d8000-005d9000 rw-p 0001d000 08:02 785909     /lib/libgcc_s-4.4.7-20120601.so.1
008eb000-00909000 r-xp 00000000 08:02 785925     /lib/ld-2.12.so
00909000-0090a000 r--p 0001d000 08:02 785925     /lib/ld-2.12.so
0090a000-0090b000 rw-p 0001e000 08:02 785925     /lib/ld-2.12.so
00cfb000-00cfc000 r-xp 00000000 00:00 0          [vdso]
看上去感觉是free的时候指针已经越界了, 楼主可以GDB调试一下
已查明 应该是 struct stat *buf = (struct stat*)malloc(sizeof(struct stat));

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。