包含容器的类指针怎么开辟内存空间?
当类里面含有容器的时候,声明一个该类的指针,按常规方式分配内存空间,改变类的容器成员的时候(push_back(),resize()出错size()正常)就出错,这是为什么??正确地分配内存方法是什么??
[code=C/C++][/code]class A
{
public:
vector<int> ints;
};
int main()
{
//error -0x76f815de 处未处理的异常: 0xC0000005: 读取位置 0xcdcdcdc1 时发生访问冲突
A *pdata;
pdata = (A*)malloc(sizeof(A));
pdata->ints.push_back(3);
//ok
A data;
data.ints.push_back(3);
return 0;
}
[解决办法]
malloc分配的是raw memory,其上并未构造对象。C++中应该用new,它既分配空间又调用构造。
A *pdata = new A;...delete pdata;