例如,我想模拟一系列汽车,每辆汽车都有指向下一辆汽车的指针。我有一个Road-Class定义一个特殊的警察车和一些成员函数来搜索存储在每辆车的“el”变量中的一些(int)元素。然后我想插入一个具有一定数量的汽车。
class Road
{
public:
int size_road;
Car* police;
public:
bool insert(int el1);
pair<bool,int> search(int el2);
};
struct Car {
public:
int el;
Car , *right;
// Car(){}
Car(int a1,, Car *c1): el(a1), right(c1){}
};
member_function:
bool Road::insert(int el1){
if (size_road==0){
vector<Car*> cars;
Car* a;
for (int i=0; i<=size_road;i++){
if (i==0){
a =new Car(el1, NULL, NULL);
cars.push_back(a);
}
else {
Car* point=cars[i-1];
a =new Car(el1, point, NULL);
cars.push_back(a)
}
}
size_road+=1;
}
邮件: 道路88; road.size_road = 0; road88.insert(5); 我运行valgrind,它向我显示以下错误:
==9188== at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==9188== by 0x8048AC1: Road::insert(int) (in /home/tonja/Desktop/HH/1/test)
这是什么意思?为什么给新Car分配一些整数类型值是一个问题?
提前致谢。
答案 0 :(得分:1)
在您显示的代码中,Car永远不会被删除。