当指针用作指向std::unordered_map中的某个内容的关键点时,出现分段错误
Segmentation fault when pointer used as key points to something in std::unordered_map
在实际项目中使用它们之前,我正在测试std::unordered_map
s以习惯它们。
我注意到,如果我使用指针作为键,当用作键的指针实际上指向一个值时,我会得到一个段错误。这是我的代码:
#include <unordered_map>
#include <stdio.h>
int main() {
std::unordered_map<int*, int> map;
int* key;
//*key = 18;
map[key] = 1893;
printf("%dn", map[key]);
}
现在,如果我取消注释,我得到一个分割错误错误,而如果我留下它的注释,一切工作完美。为什么会发生这种情况?
您声明了一个指针,而不是一个int
。指针不指向任何地方,因为您没有初始化它。没有地方可以写18
,因为指针没有指向任何空间。
请注意,您的问题与无序映射完全无关。int * key; *key = 18;
将转储在任何上下文中。
使用int key; key = 18;
,
或者如果你真的想让key
成为一个指针:int * key = new int; key = 18;
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 当指针用作指向std::unordered_map中的某个内容的关键点时,出现分段错误