zoukankan      html  css  js  c++  java
  • free和malloc的使用

    1、

    动态内存分配时,用malloc申请内存,在使用完之后,一定要记得用free释放内存

    今天我在编写程序时遇到了这样一个问题:

    *** glibc detected *** ./SqlList: free(): invalid next size (fast): 0x09776108 ***
    ======= Backtrace: =========
    /lib/i386-linux-gnu/libc.so.6(+0x6ebc2)[0xe29bc2]
    /lib/i386-linux-gnu/libc.so.6(+0x6f862)[0xe2a862]
    /lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0xe2d94d]
    ./SqlList[0x8048709]
    ./SqlList[0x8048647]
    /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0xdd4113]
    ./SqlList[0x80484a1]
    ======= Memory map: ========
    00a93000-00ab1000 r-xp 00000000 08:0a 261548     /lib/i386-linux-gnu/ld-2.13.so
    00ab1000-00ab2000 r--p 0001d000 08:0a 261548     /lib/i386-linux-gnu/ld-2.13.so
    00ab2000-00ab3000 rw-p 0001e000 08:0a 261548     /lib/i386-linux-gnu/ld-2.13.so
    00b63000-00b7f000 r-xp 00000000 08:0a 261582     /lib/i386-linux-gnu/libgcc_s.so.1
    00b7f000-00b80000 r--p 0001b000 08:0a 261582     /lib/i386-linux-gnu/libgcc_s.so.1
    00b80000-00b81000 rw-p 0001c000 08:0a 261582     /lib/i386-linux-gnu/libgcc_s.so.1
    00dbb000-00f31000 r-xp 00000000 08:0a 261561     /lib/i386-linux-gnu/libc-2.13.so
    00f31000-00f33000 r--p 00176000 08:0a 261561     /lib/i386-linux-gnu/libc-2.13.so
    00f33000-00f34000 rw-p 00178000 08:0a 261561     /lib/i386-linux-gnu/libc-2.13.so
    00f34000-00f37000 rw-p 00000000 00:00 0 
    00f48000-00f49000 r-xp 00000000 00:00 0          [vdso]
    08048000-08049000 r-xp 00000000 00:16 1175142    /home/duqi/data_struct/List/SqlList
    08049000-0804a000 r--p 00000000 00:16 1175142    /home/duqi/data_struct/List/SqlList
    0804a000-0804b000 rw-p 00001000 00:16 1175142    /home/duqi/data_struct/List/SqlList
    09776000-09797000 rw-p 00000000 00:00 0          [heap]
    b7700000-b7721000 rw-p 00000000 00:00 0 
    b7721000-b7800000 ---p 00000000 00:00 0 
    b78e1000-b78e2000 rw-p 00000000 00:00 0 
    b78f1000-b78f4000 rw-p 00000000 00:00 0 
    bfb52000-bfb73000 rw-p 00000000 00:00 0          [stack]
    已放弃


    经过检查发现,错误并不是因为我free了两次同一块内存

    原来写的是:Lc->elem = (ElemType *)malloc(Lc->listsize);

    改成:Lc->elem = (ElemType *)malloc((Lc->listsize)*sizeof(ElemType));

    没想明白是怎么回事

    http://answers.yahoo.com/question/index?qid=20090130185622AAIfgIj

  • 相关阅读:
    多线程
    JS实现隔行变色及鼠标滑过变色
    通用存储过程
    三级嵌套
    网页内容,图片及连接 抓取通用类(转)
    获取文件夹中的图片
    上传图片生成缩略图指定生成图片宽高度边框颜色和填充颜色
    图片上传类
    ROW_NUMBER存储过程分页
    OPENDATASOURCE 链接远程数据库
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742715.html
Copyright © 2011-2022 走看看