0

我在将元素插入指向我在代码中定义的某些元素的向量的指针(在本例中为食谱)时遇到问题。在代码的其他一些部分,使用 push_back 似乎工作正常,但如果我在这段代码中使用它:

{
    Recipe defaultRec;
    this->recipes_ = new vector<Recipe>;
    this->recipes_->push_back(defaultRec);
}

我收到以下错误消息:

“分配 2.exe 中 0x01164031 处的未处理异常:0xC0000005:访问冲突读取位置 0xcccccce0”

recipes_ 的声明是:

vector<Recipe>* recipes_;

希望任何人都可以帮助我,在此先感谢。

4

2 回答 2

1

你的代码对我来说看起来不错。我确定问题出在其他地方。

顺便说一句,你为什么使用指向向量的指针?为什么不这样:

vector<Recipe> recipes_; //member

Recipe defaultRec;
recipes_.push_back(defaultRec);

至少这可以使您免于分配和解除分配。此外,最有可能的是,指向向量的指针并没有比上面的更好!

于 2011-03-22T23:20:15.677 回答
1

您的代码没有任何问题。问题可能出在其他地方。此类问题通常是由内存过度写入引起的,例如写入超出数组末尾或写入未初始化的内存位置。

于 2011-03-22T23:21:03.370 回答