我已经在Mac上编写并测试了一个小型C程序。但是,当我在linux机器上使用make文件进行编译时,我得到一个我无法理解的错误。任何帮助/指针都表示赞赏。
ssss@deas:a0$ make gcc -Wall -g -c -o map.o map.c gcc -Wall -g -c -o main.o main.c gcc map.o main.o -o map ssss@deas:a0$ ./map insert 2 2 Mapping added successfully (old value was ). *** glibc detected *** ./map: free(): invalid pointer: 0x00007fd7e0826b58 *** ======= Backtrace: ========= /lib64/libc.so.6(+0x766d6)[0x7fd7e02ed6d6] ./map[0x400f5d] /lib64/libc.so.6(__libc_start_main+0xed)[0x7fd7e029823d] ./map[0x4007b9] ======= Memory map: ======== 00400000-00402000 r-xp 00000000 00:33 27911597 /home/k/k7r7/cs317/a0/map 00601000-00602000 r--p 00001000 00:33 27911597 /home/k/k7r7/cs317/a0/map 00602000-00603000 rw-p 00002000 00:33 27911597 /home/k/k7r7/cs317/a0/map 00603000-00624000 rw-p 00000000 00:00 0 [heap] 7fd7e0061000-7fd7e0076000 r-xp 00000000 08:01 917688 /lib64/libgcc_s.so.1 7fd7e0076000-7fd7e0275000 ---p 00015000 08:01 917688 /lib64/libgcc_s.so.1 7fd7e0275000-7fd7e0276000 r--p 00014000 08:01 917688 /lib64/libgcc_s.so.1 7fd7e0276000-7fd7e0277000 rw-p 00015000 08:01 917688 /lib64/libgcc_s.so.1 7fd7e0277000-7fd7e03fe000 r-xp 00000000 08:01 917554 /lib64/libc-2.14.1.so 7fd7e03fe000-7fd7e05fd000 ---p 00187000 08:01 917554 /lib64/libc-2.14.1.so 7fd7e05fd000-7fd7e0601000 r--p 00186000 08:01 917554 /lib64/libc-2.14.1.so 7fd7e0601000-7fd7e0602000 rw-p 0018a000 08:01 917554 /lib64/libc-2.14.1.so 7fd7e0602000-7fd7e0607000 rw-p 00000000 00:00 0 7fd7e0607000-7fd7e0627000 r-xp 00000000 08:01 917547 /lib64/ld-2.14.1.so 7fd7e07e3000-7fd7e07e6000 rw-p 00000000 00:00 0 7fd7e0823000-7fd7e0827000 rw-p 00000000 00:00 0 7fd7e0827000-7fd7e0828000 r--p 00020000 08:01 917547 /lib64/ld-2.14.1.so 7fd7e0828000-7fd7e0829000 rw-p 00021000 08:01 917547 /lib64/ld-2.14.1.so 7fd7e0829000-7fd7e082a000 rw-p 00000000 00:00 0 7fff9db94000-7fff9dbb5000 rw-p 00000000 00:00 0 [stack] 7fff9dbff000-7fff9dc00000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted
怎么可能这样呢?
答案 0 :(得分:2)
取消引用然后无法释放的指针是错误的代码。 如果你写了这个,看看电子围栏或valgrind。