_BLOCK_TYPE_IS_VALID错误,它打破了xmemory:void dellocate

时间:2012-06-15 03:52:32

标签: visual-c++

我有一个在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班的析构者吗?或类似的东西?

1 个答案:

答案 0 :(得分:0)

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

Base1::Base1(string _message){ message = strdup(_message.c_str()); }