#include <iostream> #include <memory> class Foo { public: void bar(){ std::cout<<"Hello from Foo::bar \n"; } } ; int main(){ Foo foo; Foo* foo_ptr=&foo; std::shared_ptr<Foo> foo_sptr(&foo); void (Foo::*bar_ptr)()=&Foo::bar; (foo.*bar_ptr)(); (foo_ptr->*bar_ptr)(); (foo_sptr.get()->*bar_ptr)(); }
Standard input is empty
Hello from Foo::bar Hello from Foo::bar Hello from Foo::bar
*** Error in `./prog': free(): invalid pointer: 0xbffe760f *** ======= Backtrace: ========= /lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x75e72)[0xb7571e72] /lib/i386-linux-gnu/i686/cmov/libc.so.6(+0x76bb0)[0xb7572bb0] /usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb775482f] ./prog[0x8048ad8] ./prog[0x8048854] /lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf5)[0xb75158f5] ./prog[0x80488f1] ======= Memory map: ======== 08048000-08049000 r-xp 00000000 08:03 1295705 /home/0G9tsK/prog 08049000-0804a000 rw-p 00001000 08:03 1295705 /home/0G9tsK/prog 08b20000-08b41000 rw-p 00000000 00:00 0 [heap] b74fa000-b74fc000 rw-p 00000000 00:00 0 b74fc000-b76a5000 r-xp 00000000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b76a5000-b76a6000 ---p 001a9000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b76a6000-b76a8000 r--p 001a9000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b76a8000-b76a9000 rw-p 001ab000 08:03 1303839 /lib/i386-linux-gnu/i686/cmov/libc-2.17.so b76a9000-b76ac000 rw-p 00000000 00:00 0 b76ac000-b76c7000 r-xp 00000000 08:03 1303883 /lib/i386-linux-gnu/libgcc_s.so.1 b76c7000-b76c8000 rw-p 0001a000 08:03 1303883 /lib/i386-linux-gnu/libgcc_s.so.1 b76c8000-b76c9000 rw-p 00000000 00:00 0 b76c9000-b770a000 r-xp 00000000 08:03 1303836 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b770a000-b770b000 r--p 00040000 08:03 1303836 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b770b000-b770c000 rw-p 00041000 08:03 1303836 /lib/i386-linux-gnu/i686/cmov/libm-2.17.so b770c000-b77e8000 r-xp 00000000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77e8000-b77e9000 ---p 000dc000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77e9000-b77ed000 r--p 000dc000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77ed000-b77ee000 rw-p 000e0000 08:03 1345926 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.18 b77ee000-b77f5000 rw-p 00000000 00:00 0 b77f7000-b77fb000 rw-p 00000000 00:00 0 b77fb000-b77fc000 r-xp 00000000 00:00 0 [vdso] b77fc000-b781b000 r-xp 00000000 08:03 1303796 /lib/i386-linux-gnu/ld-2.17.so b781b000-b781c000 r--p 0001f000 08:03 1303796 /lib/i386-linux-gnu/ld-2.17.so b781c000-b781d000 rw-p 00020000 08:03 1303796 /lib/i386-linux-gnu/ld-2.17.so bffd4000-bffe9000 rw-p 00000000 00:00 0 [stack]