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

  • 相关阅读:
    C语言I博客作业03
    C语言I博客作业06
    C语言I博客作业01
    C语言I博客作业04
    C语言I博客作业05
    How kNN algorithm works(kNN算法原理讲解)
    《机器学习笔记》环境配置(Windows64位)
    git 命令使用
    关于推荐系统中的冷启动问题探讨(Approaching the Cold Start Problem in Recommender Systems)
    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742715.html
Copyright © 2011-2022 走看看