这个程序为什么会敲蛋?
先不管存储泄漏,从C++语义上说这两个程序应该是一致的吧,怎么一个能预期运行,一个就敲蛋了呢,初学C++,帮忙解释下
程序一
程序二
[code=BatchFile]*** glibc detected *** ./a.out: free(): invalid pointer: 0x08f0600c ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7ec23f4]
/lib/tls/i686/cmov/libc.so.6(cfree+0x96)[0xb7ec4456]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb80a0031]
./a.out[0x80488f3]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7e69685]
./a.out[0x80487a1]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:01 843784 /home/luojianwen/programer/c/a.out
08049000-0804a000 r--p 00000000 08:01 843784 /home/luojianwen/programer/c/a.out
0804a000-0804b000 rw-p 00001000 08:01 843784 /home/luojianwen/programer/c/a.out
08f06000-08f27000 rw-p 08f06000 00:00 0 [heap]
b7d00000-b7d21000 rw-p b7d00000 00:00 0
b7d21000-b7e00000 ---p b7d21000 00:00 0
b7e52000-b7e53000 rw-p b7e52000 00:00 0
b7e53000-b7fab000 r-xp 00000000 08:01 1073300 /lib/tls/i686/cmov/libc-2.8.90.so
b7fab000-b7fad000 r--p 00158000 08:01 1073300 /lib/tls/i686/cmov/libc-2.8.90.so
b7fad000-b7fae000 rw-p 0015a000 08:01 1073300 /lib/tls/i686/cmov/libc-2.8.90.so
b7fae000-b7fb1000 rw-p b7fae000 00:00 0
b7fb1000-b7fbe000 r-xp 00000000 08:01 1073167 /lib/libgcc_s.so.1
b7fbe000-b7fbf000 r--p 0000c000 08:01 1073167 /lib/libgcc_s.so.1
b7fbf000-b7fc0000 rw-p 0000d000 08:01 1073167 /lib/libgcc_s.so.1
b7fc0000-b7fc1000 rw-p b7fc0000 00:00 0
b7fc1000-b7fe5000 r-xp 00000000 08:01 1073306 /lib/tls/i686/cmov/libm-2.8.90.so
b7fe5000-b7fe6000 r--p 00023000 08:01 1073306 /lib/tls/i686/cmov/libm-2.8.90.so
b7fe6000-b7fe7000 rw-p 00024000 08:01 1073306 /lib/tls/i686/cmov/libm-2.8.90.so
b7fe7000-b80ca000 r-xp 00000000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80ca000-b80cb000 ---p 000e3000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80cb000-b80cf000 r--p 000e3000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80cf000-b80d0000 rw-p 000e7000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80d0000-b80d6000 rw-p b80d0000 00:00 0
b80d9000-b80dc000 rw-p b80d9000 00:00 0
b80dc000-b80f6000 r-xp 00000000 08:01 1073168 /lib/ld-2.8.90.so
b80f6000-b80f7000 r-xp b80f6000 00:00 0 [vdso]
b80f7000-b80f8000 r--p 0001a000 08:01 1073168 /lib/ld-2.8.90.so
b80f8000-b80f9000 rw-p 0001b000 08:01 1073168 /lib/ld-2.8.90.so
bfae4000-bfaf9000 rw-p bffeb000 00:00 0 [stack]
Aborted[/code]
程序一
#include <iostream>
#define interface class
using namespace std;
interface A{
public:
virtual void fun_a()=0;
};
interface B{
public:
virtual void fun_b()=0;
};
class C:public A,public B{
public:
void fun_a(){cout<<"function a"<<endl;}
void fun_b(){cout<<"function b"<<endl;}
~C(){cout<<"destructor"<<endl;}
};
int main(int argc,char **argv){
A *a=new C();
a->fun_a();
delete a;
return 0;
}
程序二
#include <iostream>
#define interface class
using namespace std;
interface A{
public:
virtual void fun_a()=0;
};
interface B{
public:
virtual void fun_b()=0;
};
class C:public A,public B{
public:
void fun_a(){cout<<"function a"<<endl;}
void fun_b(){cout<<"function b"<<endl;}
~C(){cout<<"destructor"<<endl;}
};
int main(int argc,char **argv){
B *b=new C();
b->fun_b();
delete b;
return 0;
}
[code=BatchFile]*** glibc detected *** ./a.out: free(): invalid pointer: 0x08f0600c ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7ec23f4]
/lib/tls/i686/cmov/libc.so.6(cfree+0x96)[0xb7ec4456]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb80a0031]
./a.out[0x80488f3]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7e69685]
./a.out[0x80487a1]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:01 843784 /home/luojianwen/programer/c/a.out
08049000-0804a000 r--p 00000000 08:01 843784 /home/luojianwen/programer/c/a.out
0804a000-0804b000 rw-p 00001000 08:01 843784 /home/luojianwen/programer/c/a.out
08f06000-08f27000 rw-p 08f06000 00:00 0 [heap]
b7d00000-b7d21000 rw-p b7d00000 00:00 0
b7d21000-b7e00000 ---p b7d21000 00:00 0
b7e52000-b7e53000 rw-p b7e52000 00:00 0
b7e53000-b7fab000 r-xp 00000000 08:01 1073300 /lib/tls/i686/cmov/libc-2.8.90.so
b7fab000-b7fad000 r--p 00158000 08:01 1073300 /lib/tls/i686/cmov/libc-2.8.90.so
b7fad000-b7fae000 rw-p 0015a000 08:01 1073300 /lib/tls/i686/cmov/libc-2.8.90.so
b7fae000-b7fb1000 rw-p b7fae000 00:00 0
b7fb1000-b7fbe000 r-xp 00000000 08:01 1073167 /lib/libgcc_s.so.1
b7fbe000-b7fbf000 r--p 0000c000 08:01 1073167 /lib/libgcc_s.so.1
b7fbf000-b7fc0000 rw-p 0000d000 08:01 1073167 /lib/libgcc_s.so.1
b7fc0000-b7fc1000 rw-p b7fc0000 00:00 0
b7fc1000-b7fe5000 r-xp 00000000 08:01 1073306 /lib/tls/i686/cmov/libm-2.8.90.so
b7fe5000-b7fe6000 r--p 00023000 08:01 1073306 /lib/tls/i686/cmov/libm-2.8.90.so
b7fe6000-b7fe7000 rw-p 00024000 08:01 1073306 /lib/tls/i686/cmov/libm-2.8.90.so
b7fe7000-b80ca000 r-xp 00000000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80ca000-b80cb000 ---p 000e3000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80cb000-b80cf000 r--p 000e3000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80cf000-b80d0000 rw-p 000e7000 08:01 91052 /usr/lib/libstdc++.so.6.0.10
b80d0000-b80d6000 rw-p b80d0000 00:00 0
b80d9000-b80dc000 rw-p b80d9000 00:00 0
b80dc000-b80f6000 r-xp 00000000 08:01 1073168 /lib/ld-2.8.90.so
b80f6000-b80f7000 r-xp b80f6000 00:00 0 [vdso]
b80f7000-b80f8000 r--p 0001a000 08:01 1073168 /lib/ld-2.8.90.so
b80f8000-b80f9000 rw-p 0001b000 08:01 1073168 /lib/ld-2.8.90.so
bfae4000-bfaf9000 rw-p bffeb000 00:00 0 [stack]
Aborted[/code]
...全文
相关推荐
米蛋卡拉OK学习机数据 固件程序 ROM程序
米蛋卡拉OK学习机数据 固件程序 ROM程序
微信小程序制作扭蛋机代码实例
公司要制作活动小程序,其中有一个扭蛋机的效果实现抽奖的功能。在网上找了好久竟没有找到(不知道是不是我找代码的方式有问题)。最后还是自己做一个吧- _ – ,效果如下: 1.wxml 当然我这里没有用wx:for遍历 <!-- 扭蛋机 --> <image class=play {{start?'go':''}} bindtap=
蛋
量子翼龙蛋回购 游戏类
简单的微信小程序Uniapp扭蛋机源码
简单的扭蛋机源码,css3动画,扭蛋翻滚以及轨迹
鸡蛋数据集:受精蛋,裂纹蛋,无精蛋
种蛋检测数据集,主要包括受精蛋、无精蛋和裂纹蛋三种类别,总共2000+张数据,标签为yolo格式


