Существует класс шаблона для последовательностей в 4-буквенном алфавите (=> 2 бита на букву):
template <size_t _size>
class Seq {
private:
const static size_t _byteslen = (_size / 4) + (_size % 4 != 0);
char _bytes[_byteslen];
public:
Seq() {};
Seq(const char* s);
Seq(const Seq<_size> &seq);
...
std::string str() const;
...
}
Если конструктор копирования реализован как глупый из строки, то все работает нормально.
Seq(const Seq<_size> &seq) {
Seq(seq.str().c_str());
}
В противном случае, если конструктор копирования использует memcpy, например:
Seq(const Seq<_size> &seq) {
memcpy(_bytes, seq._bytes, _byteslen);
}
Программа получает ошибку segfault спустя несколько секунд (выполняет операции + = или [] с совершенно другим std ::строка).В чем может быть проблема с такой memcpy?Спасибо.
PS memmove не помогает.