어떤 이유로 든 내 구현으로 0 크기 배열 액세스가 0 위치에, 5 크기 배열 액세스가 50 위치를 허용합니다. 두 위치 모두 내 관점에서 세분화 오류 오류가 발생해야합니다. 나는 아마도 메모리를 잘못 할당함으로써 발생할 수 있다고 생각하지만, 내 편이 보인다고해서 누군가가 왜 그 결과를 얻었는지 말할 수 있다고 생각한다. 배열에 대한디나믹 어레이 구현 (필자는 존재할 수없는 위치에 액세스 할 수 있음)
내 코드 :
class vector{
private:
int length;
int cap;
T* arr;
public:
vector(int n){
arr = new T[n];
length = n;
cap = n;
}
vector():vector(0){};
vector(vector<T> & other){
arr = new T[other.size()];
length = other.size();
cap = other.capacity();
}
~vector(){
delete[] arr;
}
T& operator[](int ind) {
return arr[ind];
}
const T& operator[](int ind) const{
return arr[ind];
}
};
내 시험 :
int main(int argc, char* argv[])
{
vector<int> v;
v[0] = 5;
vector<int> v2(5);
std::cout<<v2[50]<<" "<<v[0]<<std::endl;
}
출력 :
이0 0
같은 것이 ... "내 관점에 대해 나에게 분할 오류 오류가 발생합니다 모두 위치가" 다시 코드가 부족합니다. 따라서 * 정의되지 않은 동작 *을 호출하는 특성. – WhozCraig
'길이'와 '뚜껑'의 차이점은 무엇입니까? –