Я пытаюсь отладить устаревший код, написанный для Linux. Иногда приложение получает segfault, когда оно достигает вызова memcpy в следующем методе:
std::vector<uint8> _storage;
size_t _wpos;
void append(const uint8 *src, size_t cnt)
{
if (!cnt)
return;
if (_storage.size() < _wpos + cnt)
_storage.resize(_wpos + cnt);
memcpy(&_storage[_wpos], src, cnt);
_wpos += cnt;
}
Значения следующие:
_storage.size() is 1000
_wpos is 0
*src points to an array of uint8 with 3 values: { 3, 110, 20 }
cnt is 3
Я понятия не имею, почему это происходит, поскольку этот метод вызывается тысячи раз во время выполнения приложения, но иногда он вызывает ошибку.
Кто-нибудь знает, как решить эту проблему?