【发布时间】:2013-01-11 01:05:08
【问题描述】:
我正在构建一个结构,其中一个成员是地图。
第一个问题允许这样做吗?编译器没有抱怨。
struct A {
map<int, float> B;
}
稍后我声明了一个此类数据类型的数组。
A *C = (A *)INTERNAL_CALLOC(..., sizeof(A));
这里的函数 INTERNAL_CALLOC 是 MALLOC 的函数包装器。
后来在代码中,当我第一次尝试将一个项目插入到数组的第一个元素的映射中时,我得到了一个核心转储。
C[0].B[0] = 0.001;
知道为什么会这样吗?
谢谢!
【问题讨论】:
-
代码部分不正确。结构 A 之后的行是“map
B;” -
你不应该使用
malloc来分配 C++ 对象(你的结构是)。你应该使用new。