结构内部地图上的分割故障
Segmentation Fault on map inside structure
我正在创建一个包含地图的结构但是当我尝试插入一个元素时,它会抛出分段错误
#include<stdio.h>
#include<stdlib.h>
#include<map>
using namespace std;
typedef struct a
{
map<int,int> m;
}a;
int main()
{
a* b;
b=(a*) malloc(sizeof(a));
b->m[0]=0;
}
您的代码中甚至没有一个开始类似于惯用的C++,任何人都可以向您推荐的最好的事情就是拿起一本关于C++的好书。
程序的快速修复方法:使用new
而不是malloc
-malloc
不属于C++代码。这将确保a->m
被实际构建。然后,请确保在末尾删除b
。这伴随着new/delete
的所有问题,所以当你对C++的基础知识有了更多的了解时,请阅读智能指针。
稍微剧烈一点的改变,会减少你的简单程序中的问题:使用自动存储:
a b;
b.m[0] = 0;
这将是你在C++中的程序,而不是奇怪的C/C++混合:
#include<map>
struct a
{
std::map<int,int> m;
};
int main()
{
a b;
b.m[0]=0;
}
使用new
运算符动态分配内存,否则在使用malloc
时将不会调用结构中的映射构造函数。
int main()
{
a* b;
b= new a;
b->m[0]=0;
// Do whatever here
// When you're done using the variable b
// free up the memory you had previously allocated
// by invoking delete
delete b;
return 0;
}
相关文章:
- 分割故障C++矩阵
- C ,二进制树的高度,而不是检查我的子树是否为空,而是在检查我的子树是否是叶子节点.抛出分割故障
- 我正在为此代码分割故障
- 在执行strcpy时获取分割故障错误
- 空隙指针分割故障
- Xcode会产生分割故障,而不是例外
- OPENCV C 中的分割故障误差
- 分割故障:核心倾倒C 矢量对字符串:
- C 2D数组导致分割故障(核心倾倒)
- 分割故障/错误读数变量-C 列表
- DLSYM导致分割故障
- 使用C 中的操作员删除的分割故障
- 使用Linux X64下的Libmozjs-52(SpidermonKey)进行分割故障
- 使用长变量时分割故障(11)错误
- C - 返回字符串时的分割故障
- 创建VertexArray时的分割故障
- 向量分割故障的向量
- 从std :: fileSystem ::路径对象的类中退出时的分割故障
- C 矢量分割故障
- 基于向量的数据格式的分割故障误差