#include <iostream> #include <memory> using namespace std; struct A { int r = 1; }; struct B { void foo( A&& a ) { j = &a; cout << j->r; } const A& begin() const { return *j; } A* j; }; int main() { A a; B b; b.foo( std::move( a ) ); delete &b.begin(); cout << b.begin().r; // cout << a->r; return 0; }
Standard input is empty
1
*** Error in `./prog': munmap_chunk(): invalid pointer: 0xbfdfdb2c *** ======= Backtrace: ========= /lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x75e72)[0xb7652e72] /lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x76525)[0xb7653525] /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb783582f] ./prog[0x8048541] /lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf5)[0xb75f68f5] ./prog[0x80485b1] ======= Memory map: ======== 08048000-08049000 r-xp 00000000 09:03 16255889 /home/xgILHn/prog 08049000-0804a000 rw-p 00000000 09:03 16255889 /home/xgILHn/prog 087b9000-087da000 rw-p 00000000 00:00 0 [heap] b75db000-b75dd000 rw-p 00000000 00:00 0 b75dd000-b7786000 r-xp 00000000 09:03 16394299 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7786000-b7787000 ---p 001a9000 09:03 16394299 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7787000-b7789000 r--p 001a9000 09:03 16394299 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b7789000-b778a000 rw-p 001ab000 09:03 16394299 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b778a000-b778d000 rw-p 00000000 00:00 0 b778d000-b77a8000 r-xp 00000000 09:03 16394343 /lib/i386-linux-gnu/libgcc_s.so.1 b77a8000-b77a9000 rw-p 0001a000 09:03 16394343 /lib/i386-linux-gnu/libgcc_s.so.1 b77a9000-b77aa000 rw-p 00000000 00:00 0 b77aa000-b77eb000 r-xp 00000000 09:03 16394296 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b77eb000-b77ec000 r--p 00040000 09:03 16394296 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b77ec000-b77ed000 rw-p 00041000 09:03 16394296 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b77ed000-b78c9000 r-xp 00000000 09:03 16679929 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b78c9000-b78ca000 ---p 000dc000 09:03 16679929 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b78ca000-b78ce000 r--p 000dc000 09:03 16679929 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b78ce000-b78cf000 rw-p 000e0000 09:03 16679929 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b78cf000-b78d6000 rw-p 00000000 00:00 0 b78d8000-b78dc000 rw-p 00000000 00:00 0 b78dc000-b78dd000 r-xp 00000000 00:00 0 [vdso] b78dd000-b78fc000 r-xp 00000000 09:03 16394256 /lib/i386-linux-gnu/ld-2.17.so b78fc000-b78fd000 r--p 0001f000 09:03 16394256 /lib/i386-linux-gnu/ld-2.17.so b78fd000-b78fe000 rw-p 00020000 09:03 16394256 /lib/i386-linux-gnu/ld-2.17.so bfddd000-bfdfe000 rw-p 00000000 00:00 0 [stack]