【发布时间】:2017-11-02 19:58:41
【问题描述】:
我有一个代码,我在其中设置了一个指向类对象的指针数组。像这样的
FE **dg = new FE*[ne];
for (int i = 0; i < numEle; i++)
{
dg[i] = new FE(p, pt_type);
}
现在我想做的是在其他地方将其中一些指针重新分配给具有不同参数的新对象。
dg[1] = new FE(q, pt_type);
这显然是有问题的,因为需要删除 dg[1] 指向的旧对象。当我这样做时
delete dg[1];
dg[1] = new FE(q, pt_type);
我得到一个段错误。当我不这样做时,代码会运行,但会出现内存泄漏。
【问题讨论】:
-
你能给我们一个minimal reproducible example吗?您的
delete代码块对我来说是正确的。 -
猜猜这与
dg的真正含义有关。是的,我同意奥利弗先生的观点! -
很难说不知道发生了什么。请提供minimal reproducible example。
-
为什么要使用指针和动态分配?为什么不只是
FE对象(不是指针)的std::vector?
标签: c++ arrays pointers memory-leaks