我正在创建一个包含map的结构,但是当我尝试插入一个元素时,它会抛出分段错误
#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;
}
Run Code Online (Sandbox Code Playgroud)
你的代码甚至都没有开始像惯用的C++,任何人都可以向你推荐的最好的东西就是拿一本关于C++的好书.
快速修复程序:使用new而不是malloc- malloc不属于C++代码.这将确保a->m实际构建.然后,一定要b在最后删除.这带来了所有问题new/delete,因此当您对C++的基础知识有所了解时,请阅读智能指针.
稍微改变一下,这将导致简单程序中的问题减少:使用自动存储:
a b;
b.m[0] = 0;
Run Code Online (Sandbox Code Playgroud)
这将是你的C++程序,而不是奇怪的C/C++组合:
#include<map>
struct a
{
std::map<int,int> m;
};
int main()
{
a b;
b.m[0]=0;
}
Run Code Online (Sandbox Code Playgroud)