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

原文地址:https://www.cnblogs.com/javaadu/p/11742715.html