使用VS 2013 Express可以重现该问题.当内部向量实现试图释放原始向量时,它崩溃了.
但是,使用'new'而不是'malloc'可以解决问题.
任何人都可以对此有所了解吗?
struct UndirectedGraphNode {
int label;
vector<UndirectedGraphNode *> neighbors;
UndirectedGraphNode(int x) : label(x) {};
};
int main(int argc, char** argv)
{
UndirectedGraphNode* node1 = (UndirectedGraphNode*)malloc(sizeof(UndirectedGraphNode));
node1->label = 0;
node1->neighbors.resize(2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
malloc不创建对象.它只是分配内存.要创建对象(至少是非平凡的对象),您需要调用构造函数.new那样做,malloc不是.您的程序崩溃是因为您正在处理分配的内存,malloc就好像那里有一个对象,如果没有.