我在我的代码中使用向量。
导致错误的行如下:
vector<Node> alt_seq ;
alt_seq = vector<Node>(1000);
for(int j=0; j<alt_cf.getNoOfNodes(i); j++)
{
Node temp_node = *alt_itr;
alt_itr++;
alt_seq.push_back(temp_node);
}
该行:
alt_seq.push_back(temp_node);
导致运行时错误。但是,如果我使用一些初始大小初始化Vector,如下所示:
vector<Node> alt_seq(1000) ;
在这种情况下代码工作正常。 但是我不想给出初始大小,因为向量中的对象数量在运行时是可变的。 请帮我。我是C ++的新手。
以下是完整的方法功能供您参考:
答案 0 :(得分:3)
您的Node
类有一个名为CombinedFragment*
的{{1}}类型的指针成员。如果您没有定义自己的复制ctor和赋值运算符,则会创建悬空引用。此外,如果cfrag
负责分配/解除分配Node
,则需要正确的dtor来防止泄漏。如果您不想深度复制cfrag
,可以使用CombinedFragment
。
此外,shared_ptr
的默认ctor可能甚至不需要在那里(它将Node
留给未初始化状态。)
答案 1 :(得分:0)
我可以看到一个问题;当你声明1000 vector
个对象,然后执行push_back
时,你会添加到向量的末尾,即你想要添加的对象是1001,1002 ....等等如果声明1000 vector
个对象没有给你一个运行时错误,我首先会看到默认定义是什么(因为前1000个节点对象有默认值),因为这不是错误输出并与实际数据进行比较我正在尝试加载。希望这会有所帮助。