使用stl map作为struct的成员

elg*_*noh 1 c++ stl map

我正在构建一个结构,其中一个成员是一个地图.
第一个问题是允许的吗?编译器没有抱怨.

struct A {  
  map<int, float> B;  
}  
Run Code Online (Sandbox Code Playgroud)

后来我声明了一个这样的数据类型的数组.

A *C = (A *)INTERNAL_CALLOC(..., sizeof(A));  
Run Code Online (Sandbox Code Playgroud)

这里的函数INTERNAL_CALLOC是MALLOC的功能包装器.
稍后在代码中,当我尝试第一次将项插入到数组的第一个元素的映射中时,我得到了一个核心转储.

C[0].B[0] = 0.001;  
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?
谢谢!

Oli*_*rth 5

是的,结构中的地图很好.

分配malloc绝对不是很好; 不调用构造函数.因此,当您尝试使用它时,您的地图很可能会做一些可怕的事情.

一般经验法则:不要在C++中使用malloc/ calloc/ realloc/ free.尽可能避免动态分配,并在不可避免时使用new/ delete.*


*阅读智能指针.