这段代码对我造成了内存泄漏,我不知道为什么。
[编辑]此处包含的代码有问题:
#include "src/base.cpp"
typedef std::map<std::string, AlObj*, std::less<std::string>,
gc_allocator<std::pair<const std::string, AlObj*> > > KWARG_TYPE;
AlInt::AlInt(int val) {
this->value = val;
this->setup();
}
// attrs is of type KWARG_TYPE
void AlInt::setup() {
this->attrs["__add__"] = new AddInts();
this->attrs["__sub__"] = new SubtractInts();
this->attrs["__mul__"] = new MultiplyInts();
this->attrs["__div__"] = new DivideInts();
this->attrs["__pow__"] = new PowerInts();
this->attrs["__str__"] = new PrintInt();
}
int main() {
while (true) {
AlObj* a = new AlInt(3);
}
}
AlInt 继承自 AlObj,而 AlObj 又继承自 gc。当我注释掉 setup() 的内容时,我没有内存泄漏,这让我相信问题在于地图没有清理,但是我使用的是 gc 分配器,所以我不确定接下来看哪里。想法?