我正在用向量编写一个简短的代码,该元素是自定义类对象。 自定义类还包含指向另一个类的指针。 在主进程中删除aPtr后释放b_ptr的内存导致它只在push_back对象向量时复制指针(不存储数据)。 有什么想法解决这个问题? (* shared_ptr无法在我的系统中使用。)
感谢〜
struct myStruct
{
vector<uint16_t> pers;
vector<string> strs;
};
class A
{
A(){ b_ptr = new B() };
B* b_ptr;
};
class B
{
B();
vector<myStruct> mStruct;
};
主要流程如下
main()
{
vector<A> v_of_a;
A* aPtr;
while(something != NULL)
{
aPtr = new A();
//Handling with data for property of A, vector data of B
v_of_a.push_back(*aPtr);
delete aPtr;
}
}
答案 0 :(得分:0)
如果我正确地理解了你的问题,那你就要问&#34;当A实例出现时,如何让b_ptr指向的内存被解除分配?
为此,您需要使用析构函数:
struct A {
A() {
b_ptr = new B();
}
~A() {
delete b_ptr;
}
B* b_ptr;
};