可能重复:
C++:为什么new需要?
为什么我不能使用malloc为我的对象分配空间,因为它们是包含虚函数的类的子元素?这真令人沮丧.有充分的理由吗?
以下程序说明了这个问题.它在第27行的段错误,我称之为aa-> f()
#include <iostream>
#include <cstdlib>
class A
{
public:
virtual int f() {return 1;}
};
class B
{
public:
int f() {return 1;}
};
class Aa : public A {};
class Bb : public B {};
int main()
{
Aa* aa = (Aa*)malloc(sizeof(Aa));
Aa* aan = (Aa*)new Aa();
Bb* bb = (Bb*)malloc(sizeof(Bb));
std::cout << bb->f() << std::endl;
std::cout << aan->f() << std::endl;
std::cout << aa->f() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
版本信息:g ++(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5