退出分段错误 ¿如何解决此问题?
Exited segmentation fault ¿how can i fix this problem?
有人知道为什么我不能为当前结构中的每个num_episodio向量赋值吗?
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct serie{
vector<int> num_episodio;
};
int main(){
//create a vector of structs
vector<serie> serie_individual;
serie_individual.push_back(serie());
serie_individual[0].num_episodio[0]=1;
cout<<serie_individual[0].num_episodio[0];
}
serie_individual[0].num_episodio
是一个空向量。serie_individual[0].num_episodio[0]
通过越界访问索引来表现出未定义的行为。
看到仅仅因为你在serie_individual中推送一个元素并不意味着 该元素中的矢量num_episodio填充了数据... 然后,当您这样做时:
serie_individual[0].num_episodio[0]
您正在尝试获取空向量的第一个元素...
这就是代码中错误的原因...
解决此问题的一种选择是在系列中定义构造函数并插入其向量 喜欢:
struct serie
{
serie(int i)
{
num_episodio.push_back(i);
}
std::vector<int> num_episodio;
};
并且您必须像以下方式调整代码:
int main()
{
struct serie
{
serie(int i)
{
num_episodio.push_back(i);
}
std::vector<int> num_episodio;
};
std::vector<serie> serie_individual;
serie_individual.push_back(serie(2));
std::cout << "serie before: " << serie_individual[0].num_episodio[0] << std::endl;
serie_individual[0].num_episodio[0]=10;
std::cout << "serie after: " << serie_individual[0].num_episodio[0];
return 0;
}
它实际上是对下一行的空指针错误的取消引用,其中num_episodio
NULL
。
serie_individual[0].num_episodio[0]=1;
serie_individual[0].num_episodio[0]=1
相当于*(serie_individual[0].num_episodio)=1
;
以下是您可以使用此链接重现/调试的内存错误
Memory access error: dereferencing a null pointer; abort execution.
# Writing 4 bytes to address 0x0.
#
# Stack trace (most recent call first) of the write.
# [0] file:/a.cc::19, 1
# [1] [libc-start-main]
相关文章:
- Project Euler问题4的错误解决方案
- 在java中解决这段代码时面临循环中的问题
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 难以理解某些人解决IOI问题的源代码
- 节俭并发:未解决的外部问题
- IpOpt拒绝解决不受约束的问题
- 错误LNK2005无法解决问题的解决方案
- 如何解决g++问题"internal compiler error: Illegal instruction min() _GLIBCXX_USE_NOEXCEPT { return __FLT_MI
- 必须使用尾随返回类型的示例,因为无法用旧方法解决问题
- 如何解决问题"unresolved extenal symbol _DllMainCRTStartup@12"?
- 如何使用OlesetClipboard将我的COM对象放置在剪贴板上时解决问题
- 与C++析构函数相比,C#析构函数和GC并没有真正解决问题
- 没有调用函数,而是使用垃圾值.如何调用函数并解决问题
- 所有的组合算法和解决C++问题的一般方法
- 模板过载解决问题
- 对"pthread_key_create"的未定义引用;参数顺序不能解决问题
- 如何在使用cplex解决问题时设置间隙
- 选择一门语言学习真的很重要吗?他们都使用相似的技术来解决问题
- Iostream解决c++问题
- 递归是一件坏事吗?在递归似乎最有用的地方,是否有更清晰或更有效的方法来解决问题?