C ++,valgrind operator new(unsigned int)

时间:2013-11-22 13:53:16

标签: c++ valgrind

例如,我想模拟一系列汽车,每辆汽车都有指向下一辆汽车的指针。我有一个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分配一些整数类型值是一个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

在您显示的代码中,Car永远不会被删除。