我有一个在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
班的析构者吗?或类似的东西?
答案 0 :(得分:0)
您不显示Base1构造函数。我认为问题出在Base1构造函数中。 您可以像这样实现Base1构造函数:
Base1::Base1(string _message){ message = strdup(_message.c_str()); }