std::copy
От: Аноним  
Дата: 17.09.10 05:10
Оценка:
привет
получаю данные из сети в формате
!*HEADER;TYPE;LEHGTH*#111111111!*HEADER;TYPE;LEHGTH*#2222222222

вот пример

ProcessJpegHeader( byte* pBuffer, size_t nSize )
{
.........
byte* pcJpegChunk = pBuffer + nHeaderLength;
byte* pcDataChunkEnd = pBuffer + nSize;

int nBytes = nSize — nHeaderLength;

.....

std::copy(pcDataChunk, pcDataChunkEnd, std::back_inserter(m_DataBuffer));
.....
}

иногда падает в std::copy
Re: std::copy
От: RolandD  
Дата: 17.09.10 05:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>привет

А>std::copy(pcDataChunk, pcDataChunkEnd, std::back_inserter(m_DataBuffer));
А>.....
А>}

А>иногда падает в std::copy


Как декларирован и чем проинициализирован m_DataBuffer?
Re[2]: std::copy
От: Аноним  
Дата: 17.09.10 06:25
Оценка:
Здравствуйте, RolandD, Вы писали:

RD>Здравствуйте, Аноним, Вы писали:


А>>привет

А>>std::copy(pcDataChunk, pcDataChunkEnd, std::back_inserter(m_DataBuffer));
А>>.....
А>>}

А>>иногда падает в std::copy


RD>Как декларирован и чем проинициализирован m_DataBuffer?


вот таким образом
typedef std::vector<byte>
Re: std::copy
От: Micht  
Дата: 17.09.10 06:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>ProcessJpegHeader( byte* pBuffer, size_t nSize )

А>{
А>.........
А>byte* pcJpegChunk = pBuffer + nHeaderLength;
А>byte* pcDataChunkEnd = pBuffer + nSize;

А>int nBytes = nSize — nHeaderLength;


А>.....


А>std::copy(pcDataChunk, pcDataChunkEnd, std::back_inserter(m_DataBuffer));

А>.....
А>}

Это не опечатка? pcDataChunk или pcJpegChunk и pcDataChunkEnd вычисляются верно?

Можно попробовать сделать

...
try {
    std::copy(pcDataChunk, pcDataChunkEnd, std::back_inserter(m_DataBuffer));
} catch (...) {
    printf("Error: pointers are %08x and %08x\n", pcDataChunk, pcDataChunkEnd);
}
...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.