C++ 向量<;浮动>;*导致seg故障!

C++ 向量<;浮动>;*导致seg故障!,c++,C++,我有一个浮点数向量,定义如下: std::vector<float>* MyVec; 我有一个seg故障。为了尝试找出发生了什么,我注释了push_back线路,我仍然看到seg故障,当它出现seg故障时,MyVec的大小为490618047 是否有什么我已经忘记了做这个向量,它是如何被如此巨大的数字填充而没有任何条目被输入到向量中的 提前感谢。您尚未分配内存: std::vector<float>* MyVec = new std::vector<float&g

我有一个浮点数向量,定义如下:

std::vector<float>* MyVec;
我有一个seg故障。为了尝试找出发生了什么,我注释了push_back线路,我仍然看到seg故障,当它出现seg故障时,MyVec的大小为490618047

是否有什么我已经忘记了做这个向量,它是如何被如此巨大的数字填充而没有任何条目被输入到向量中的


提前感谢。

您尚未分配内存:

std::vector<float>* MyVec = new std::vector<float>();
除此之外,我认为,你不需要一个指针开始;如果是,则应执行以下操作,而不是声明指针:

std::vector<float> MyVec; //it is NOT a pointer.

您创建了指向
std::vector
的指针。如果你不初始化它

std::vector<float>* MyVec = new std::vector<float>();
std::vector*MyVec=new std::vector();
它将指向某个随机内存位置,无法使用

也许你甚至不需要使用指针

std::vector<float> MyVec;
MyVec.push_back(somevalue)
std::vector MyVec;
MyVec.push_back(somevalue)

您是否为声明的
std::vector
指针分配了存储空间

// declares a pointer to a vector of float
std::vector<float>* myvec;

// will segfault here
myvec->push_back(0.0);

// need to create this vector dynamically
std::vector<float>* myvec = new std::vector<float>();

// now you can push_back
myvec->push_back(0.0);

// when you're done with it
delete myvec;
//声明指向浮点向量的指针
std::vector*myvec;
//塞格会在这里犯错吗
myvec->push_back(0.0);
//需要动态地创建这个向量
std::vector*myvec=new std::vector();
//现在你可以把你推回去了
myvec->push_back(0.0);
//当你做完它的时候
删除myvec;

在没有看到更多代码的情况下,这就是问题的症结所在。我想问您是否需要动态分配向量,如果需要,我建议您使用适当的智能指针来完成该任务。

您应该这样初始化它:

std::vector<float>* MyVec = new std::vector<float>();

或者将其包装在智能指针中(例如from)

显示整个代码段。如果我的猜测是正确的,那么根本就没有向量。。。
std::vector<float> MyVec;
MyVec.push_back(somevalue)
// declares a pointer to a vector of float
std::vector<float>* myvec;

// will segfault here
myvec->push_back(0.0);

// need to create this vector dynamically
std::vector<float>* myvec = new std::vector<float>();

// now you can push_back
myvec->push_back(0.0);

// when you're done with it
delete myvec;
std::vector<float>* MyVec = new std::vector<float>();
delete MyVec;