读书人

包含容器的类指针如何开辟内存空间

发布时间: 2012-04-17 15:06:33 作者: rapoo

包含容器的类指针怎么开辟内存空间?
当类里面含有容器的时候,声明一个该类的指针,按常规方式分配内存空间,改变类的容器成员的时候(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,它既分配空间又调用构造。

C/C++ code
A *pdata = new A;...delete pdata; 

读书人网 >C++

热点推荐