class A
{
public:
//A();
void foo()
{
std::cout<<"1"<<std::endl;
}
virtual void fuu()
{
std::cout<<"2"<<std::endl;
}
virtual ~A()
{
//printf("~A\n");
std::cout<<"~A"<<std::endl;
}
};
class B:public A
{
public :
//B();
void foo()
{
std::cout<<"3"<<std::endl;
}
void fuu()
{
std::cout<<"4"<<std::endl;
}
};
void test()
{
//printf("test()\n");
std::cout<<"test()"<<std::endl;
A a;
//B b;
B *ptr =(B *)&a;
ptr->foo();
ptr->fuu();
}
~A中放开cout,输出如下:
test()
3
~A
Segmentation fault
~A中注释掉cout,输出如下:
test()
3
test()
3
test()
3
test()
3
test()
3
test()
3
在centos 7 gcc 4.8 用tcmalloc的情况下,为何会有以上输出,请大神指点
经测试发现加-O2后会段错误