嗨, 我有一些我不太了解的奇怪陷阱。
==10594== HEAP SUMMARY:
==10594== in use at exit: 72,704 bytes in 1 blocks
==10594== total heap usage: 2 allocs, 1 frees, 73,728 bytes allocated
==10594==
==10594== 72,704 bytes in 1 blocks are still reachable in loss record 1 of 1
==10594== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==10594== by 0x4EC6345: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24)
==10594== by 0x40106B9: call_init.part.0 (dl-init.c:72)
==10594== by 0x40107CA: call_init (dl-init.c:30)
==10594== by 0x40107CA: _dl_init (dl-init.c:120)
==10594== by 0x4000C69: ??? (in /lib/x86_64-linux-gnu/ld-2.23.so)
主要:
Car car("SUV",5000);
std::cout << car;
Car.cpp
//Constructor
Car::Car(std::string type, int budget) : name_(type), budget_(budget),momentary_cost_(0)
{
}
//Desctructor
Car::~Car()
{
while(!PartsList.empty())
{
delete PartsList.front();
PartsList.pop_front();
}
}
//Output
std::ostream& operator<<(std::ostream& screen, const Car& car)
screen<< car.type_ <<":" << std::endl;
int cost = 0;
for (auto parts : car.PartsList)
{
screen << *parts;
cost += parts->getCost();
}
screen << "-------------" << std::endl << "Total Cost: " << cost <<std::endl;
return screen;
我的意思是,即使不添加任何零件,我也会漏水。只需创建类别。到目前为止,我尝试执行的是三个规则。这给了我相同的valgrind输出。在另一个上下文中,我从未调用过addParts()函数,该函数的确具有新功能,它应该在PartsList中添加Parts,但在析构函数中将其删除。也有 Parts.cpp ,但它从来没有出现过。我尝试跟踪它。 我认为这是一个非常棘手的问题,并且我缺少一些非常简单的东西。我只是找不到。