地图内部结构的分段错误

use*_*572 0 c++ struct map

我正在创建一个包含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)

us2*_*012 7

你的代码甚至都没有开始像惯用的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)