Например, я хочу моделировать что-то вроде цепочки автомобилей, и у каждого автомобиля есть указатель на следующий автомобиль. У меня есть класс Road-Class, определяющий один специальный полицейский автомобиль и некоторые функции-члены для поиска элемента (int), хранящегося в "el" -variable каждого автомобиля. А потом я хочу вставить автомобиль с определенным номером.
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;
}
mail: Road road88; 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 некоторого значения целочисленного типа?
Заранее спасибо.
В коде, который вы показываете, автомобиль никогда не удаляется.
std::list
?new
? В любом случае, используйтеvector<Car>
и не используйтеnew
если вам это действительно не нужно (чего у вас нет).