C代码在Linux上不起作用,但在Mac上起作用

时间:2012-09-16 03:15:06

标签: c linux macos

我已经在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

 

怎么可能这样呢?

1 个答案:

答案 0 :(得分:2)

取消引用然后无法释放的指针是错误的代码。 如果你写了这个,看看电子围栏或valgrind。