相关疑难解决方法(0)

malloc()和虚函数有什么问题?

可能重复:
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

c++ malloc virtual-functions

5
推荐指数
3
解决办法
1265
查看次数

标签 统计

c++ ×1

malloc ×1

virtual-functions ×1