В настоящее время я получаю «0xC0000005: место обнаружения нарушения доступа 0xcccccce0». ошибка, и я попытался диагностировать проблему ... Я думаю, что проблема возникает, когда мое правило 3, которое я определил, входит в игру и указывает на меня.Ошибка чтения C++ Read Access
size_type size() const
{ // return length of sequence
return (this->_Mysize); <---------------------this line
}
Я на самом деле не уверен, что если есть какие-либо проблемы вообще, я останавливаться на этом в течение нескольких дней подряд.
Ниже мое правило три
ArrayStorage::ArrayStorage(){
myArray = new string[7079];
}
ArrayStorage::~ArrayStorage(){
delete[] _data;
delete[] myArray;
}
ArrayStorage::ArrayStorage(const ArrayStorage &A) {
_size = A.size();
_data = new string [size()];
for (int i = 0; i < size(); ++i)
_data[i] = A[i];
}
ArrayStorage& ArrayStorage::operator=(const ArrayStorage &A){
if (this != &A) {
delete [] _data;
_size = A.size();
_data = new string [A.size()];
for (int i = 0; i < size(); ++i) {
_data[i] = A[i];
}
}
return *this;
}
const string& ArrayStorage::operator[](int i) const{
assert((i >= 0) && (i < size()));
return _data[i];
}
string& ArrayStorage::operator[](int i){
assert((i >= 0) && (i < size()));
return _data[i];
}
трассировку бы полезно здесь – daramarak
Вы проверили, что 'this' действует? У вас есть обратная связь от отладчика (вы проверяли приложение в отладчике?)? И почему вы пытаетесь реализовать свой собственный «массив» вместо использования каких-либо стандартных контейнеров, таких как 'std :: vector'? –
Я бы предположил, что это проблема с указателем, но невозможно сказать без stacktrace/backtrack. Где-то вы вызываете size() в адресе, где вы думаете, что есть ArrayStorage, но нет. Поскольку это 0xccccce0, я бы пошел с унифицированным указателем. – dutt