g++牛人进看看

软件和网站开发以及相关技术探讨
回复
hlhl119
帖子: 81
注册时间: 2007-02-05 22:02

g++牛人进看看

#1

帖子 hlhl119 » 2007-03-14 21:02

编译h7main.cpp h7.cpp
之后就这样了!高手帮忙:谢谢了


honker@honker:~/c++Class$ g++ h7.cpp h7main.cpp -o main
honker@honker:~/c++Class$ ./main
The Strings are 'honker'
The Strings are 'abcd'
The Strings are 'abcder'
*** glibc detected *** ./main: free(): invalid pointer: 0x0000000000503034 ***
======= Backtrace: =========
/lib/libc.so.6[0x2b9d1ba17733]
/lib/libc.so.6(__libc_free+0x84)[0x2b9d1ba178b4]
./main[0x40104c]
./main[0x401646]
/lib/libc.so.6(__libc_start_main+0xf4)[0x2b9d1b9c60c4]
./main(__gxx_personality_v0+0x61)[0x4009f9]
======= Memory map: ========
00400000-00402000 r-xp 00000000 08:09 522389 /home/honker/c++Class/main
00502000-00503000 rw-p 00002000 08:09 522389 /home/honker/c++Class/main
00503000-00524000 rw-p 00503000 00:00 0 [heap]
2b9d1b3fe000-2b9d1b41a000 r-xp 00000000 08:08 1436164 /lib/ld-2.4.so
2b9d1b41a000-2b9d1b41e000 rw-p 2b9d1b41a000 00:00 0
2b9d1b519000-2b9d1b51b000 rw-p 0001b000 08:08 1436164 /lib/ld-2.4.so
2b9d1b51b000-2b9d1b601000 r-xp 00000000 08:08 1470967 /usr/lib/libstdc++.so.6.0.8
2b9d1b601000-2b9d1b700000 ---p 000e6000 08:08 1470967 /usr/lib/libstdc++.so.6.0.8
2b9d1b700000-2b9d1b706000 r--p 000e5000 08:08 1470967 /usr/lib/libstdc++.so.6.0.8
2b9d1b706000-2b9d1b709000 rw-p 000eb000 08:08 1470967 /usr/lib/libstdc++.so.6.0.8
2b9d1b709000-2b9d1b71b000 rw-p 2b9d1b709000 00:00 0
2b9d1b71b000-2b9d1b79b000 r-xp 00000000 08:08 1436331 /lib/libm-2.4.so
2b9d1b79b000-2b9d1b89a000 ---p 00080000 08:08 1436331 /lib/libm-2.4.so
2b9d1b89a000-2b9d1b89c000 rw-p 0007f000 08:08 1436331 /lib/libm-2.4.so
2b9d1b89c000-2b9d1b8a9000 r-xp 00000000 08:08 1436225 /lib/libgcc_s.so.1
2b9d1b8a9000-2b9d1b9a8000 ---p 0000d000 08:08 1436225 /lib/libgcc_s.so.1
2b9d1b9a8000-2b9d1b9a9000 rw-p 0000c000 08:08 1436225 /lib/libgcc_s.so.1
2b9d1b9a9000-2b9d1badf000 r-xp 00000000 08:08 1436218 /lib/libc-2.4.so
2b9d1badf000-2b9d1bbdf000 ---p 00136000 08:08 1436218 /lib/libc-2.4.so
2b9d1bbdf000-2b9d1bbe2000 r--p 00136000 08:08 1436218 /lib/libc-2.4.so
2b9d1bbe2000-2b9d1bbe4000 rw-p 00139000 08:08 1436218 /lib/libc-2.4.so
2b9d1bbe4000-2b9d1bbeb000 rw-p 2b9d1bbe4000 00:00 0
2b9d1bc00000-2b9d1bc21000 rw-p 2b9d1bc00000 00:00 0
2b9d1bc21000-2b9d1bd00000 ---p 2b9d1bc21000 00:00 0
7fff8f697000-7fff8f6ac000 rw-p 7fff8f697000 00:00 0 [stack]
ffffffffff600000-ffffffffffe00000 ---p 00000000 00:00 0 [vdso]
忽略 (core dumped)
honker@honker:~/c++Class$
附件
c++Class.tar.gz
(1.48 KiB) 已下载 66 次
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

#2

帖子 dbzhang800 » 2007-03-14 21:14

g++ -Wall h7.cpp h7main.cpp -o main
把这个选项打开呢?
f0rrest
帖子: 133
注册时间: 2006-09-27 20:49

#3

帖子 f0rrest » 2007-03-14 23:48

你在 String String::operator-(String& temp) 方法中,对指针 s 以及传入的引用 temp 中的指针 s 都做了修改,而在析构函数 String::~String() 中却要对这个指针做delete操作,显然会引起堆指针混乱,导致崩溃。
解决方法是,在 String String::operator-(String& temp) 方法中,用临时变量指针指向 s 来参与计算,这样保证 s 不被修改。
hlhl119
帖子: 81
注册时间: 2007-02-05 22:02

#4

帖子 hlhl119 » 2007-03-15 12:57

谢谢3楼的,已经解决!你说的没错!
回复