Поврежденные данные в std :: vector - предположительно неправильным назначением

Я назначаю значение ******* внутри вектора внутри указателя boost::tuple внутри вектора. Сам присваивание, похоже, работает хорошо, но данные, как представляется, освобождаются сразу после выделения, поскольку он, как правило, перезаписывается другими данными.

Я думал о packet* a = new packet; должен выделить новый packet а следующий .push_back(a) должен скопировать указатель и обратиться к одному и тому же значению - очевидно, я ошибаюсь. Надеюсь, кто-то увидит мою ошибку; были бы благодарны за любую помощь.

typedef boost::tuple<*******, uint16_t,="" std::vector<*******=""> > packet;

static void assignValueToMember(*******& member){
 member = 1;
}
static void assignValueToMember(uint16_t& member){
 member = 2;
}

static void assignValueToMember(std::vector<*******> member){
 int maxIndex = 10;
 for (int i = 0; i < maxIndex; i++){
 ******* a;
 assignValueToMember(a);
 member.push_back(a);
 }
}

static void assignValueToMember(std::vector<packet*>& member){

 int maxIndex = 20;

 for (int i = 0; i < maxIndex; i++){
 packet* a = new packet;
 assignValueToMember(boost::get<0>(*a));
 assignValueToMember(boost::get<1>(*a));
 assignValueToMember(boost::get<2>(*a));

 member.push_back(a);
 }
}

void Base::test(){
 std::vector<packet*> a;
 assignValueToMember(a);

 packet* b = a.front();
 std::vector<unsigned char=""> c = boost::get<2>(*b);

 std::cout << c.front(); 
}
</unsigned></packet*></packet*></*******></*******,>
1 ответ

static void assignValueToMember(std::vector<*******> member)</*******> вы передаете копию этого вектора вместо ссылки.

licensed under cc by-sa 3.0 with attribution.