首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-04-17 
包含容器的类指针怎么开辟内存空间?当类里面含有容器的时候,声明一个该类的指针,按常规方式分配内存空间,

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

热点排行