Есть такой вот кусочек кода:
unsigned int i;
for(i=0;i<v.size();i++)
{
packet.header.push_back(v[i]);
}
Где:
vector<char*> v;
struct Packet
{
vector<string> header;
string data;
};
Т.е задача этого куска кода загнать строки в string`s и с чистой
совестью освободить память, на которую указывают указатели из v.
Valgrind же на такое дело говорит:
==11813== 58 bytes in 3 blocks are possibly lost in loss record 3 of 4
==11813== at 0x402377E: operator new(unsigned) (vg_replace_malloc.c:224)
==11813== by 0x40D5BB3: std::string::_Rep::_S_create(unsigned, unsigned, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.10)
==11813== by 0x40D6814: (within /usr/lib/libstdc++.so.6.0.10)
==11813== by 0x40D6985: std::string::string(char const*, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.10)
==11813== by 0x80505D8: Client::readPacket() (client.cpp:296)
==11813== by 0x8050CD4: Client::processClient(short, Client*) (client.cpp:448)
==11813== by 0x806533E: main (s_fight.cpp:317)
Варианты типа packet.header.push_back(string(v[i]));
или с временной переменной, которая уже загонется в вектор дают
такие же ошибки...
Я где-то туплю.
Подскажете где?
Ответ на:
комментарий
от Stahl

Ответ на:
комментарий
от Deleted

Ответ на:
комментарий
от Stahl

Ответ на:
комментарий
от Stahl

Ответ на:
комментарий
от Reset

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.