gpt4 book ai didi

c++ - 从 vector 的元素成员方法插入 vector 元素 destroys *this

转载 作者:行者123 更新时间:2023-11-30 01:56:59 25 4
gpt4 key购买 nike

有人能解释一下为什么这个 C++ 代码会这样吗?以及 .. 我将来如何避免这种“vector ”问题。

#include <iostream>
#include <vector>
using namespace std;
struct my_str {
int x;
my_str() {
x = 0;
}
void insert();
};
vector<my_str> p;

void my_str :: insert() {
p.push_back(my_str());
x = 123;
}

int main() {
p.push_back(my_str());
p[0].insert();
cerr << p[0].x;
return 0;
}

最佳答案

p.push_back(my_str());void my_str::insert()

导致 vector 重新分配,this无效

x = 123;

砰!堆损坏。

为避免将来出现此类问题,请勿从其包含的对象编辑 vector 。或者,如果必须,请确保在此之后不使用对象成员。

关于c++ - 从 vector 的元素成员方法插入 vector 元素 destroys *this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19255204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com