0

我有一段代码可以在 C++ 中的 DevC++ 中编译,但在 VSC++ 中,它引发了 _Block_type_is_valid (phead->...) 错误,当我重试并中断时,它会xmemory运行void deallocate(pointer _ptr, size_t type)。我的问题是什么?以及如何解决?

编辑:

我有一个Base类和一个从类Base1继承的Base类:

class Base{
    public:
            virtual string getString() = 0;    
};

class Base1:: public Base2{
    private:
        char * message;
    public:
        Base1(string _message);
        ~Base1(); 
        string getString();
};
//Base1.cpp

Base1::Base1(string _message){/*Do coppy from _message to message*/}
Base1::~Base1(){delete[] message;}

该函数getString()将返回message, 并在main.cpp我调用Base *b = new Base1("something")然后调用b->getString(),仅此而已。但是,在编译时,我遇到了如上所述的问题。这是我想念Base类的析构函数吗?或类似的东西?

4

1 回答 1

0

您没有显示 Base1 构造函数。我认为问题出在 Base1 构造函数中。您可以像这样实现 Base1 构造函数:

Base1::Base1(string _message){ message = strdup(_message.c_str()); }
于 2012-06-15T08:21:25.477 回答