inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

vector #4

예외가 throw됨: 쓰기 액세스 위반입니다. this->_data이(가) 0x1110112였습니다.

해결된 질문

2573

작성자 없음

작성한 질문수 0

0

계속 제목과 같은 오류가 뜹니다 ㅠㅠ 살려주세요..

#include <iostream>
#include <vector>
using namespace std;


// vector를 만들어보자

template<typename T>
class Vector
{
public:
	Vector() : _data(nullptr), _size(0), _capacity(0)
	{

	}

	~Vector()
	{
		if (_data)
			delete[] _data;
	}
	// [               ]
	void push_back(const T& val)
	{
		if (_size == _capacity)
		{
			//증설 작업
			int newCapacity = static_cast<int>(_capacity * 1.5); //실수에서 int로 변환하면 데이터가 잘릴수도있다
			if (newCapacity == _capacity)
				newCapacity++;

			reserve(newCapacity);
		}

		// [1][2][3][]
		_data[_size] = val;
		
		//데이터 개수 증가
		_size++;
	}

	void reserve(int capacity)
	{
		_capacity = capacity;

		T* newData = new T[_capacity];

		//데이터 복사
		for (int i = 0; i < _size; i++)
		{
			newData[i] = _data[i];

			//기존에 있던 데이터를 날린다
			if (_data)
				delete[] _data;

			// 교체
			_data = newData;

		}
	}

	T& operator[](const int pos) { //레퍼런스로 만들어야 데이터를 넣을 수 있음 
		return _data[pos];
	}

	int size() { return _size; }
	int capacity() { return _capacity; }

private:
	T* _data;
	int _size;
	int _capacity;
};

int main()
{
	Vector<int> v;

	//v.reserve(100);

	for (int i = 0; i < 100; i++)
	{
		v.push_back(i);
		cout << v.size() << " " << v.capacity() << endl;
	}

	for (int i = 0; i < v.size(); i++)
	{
		cout << v[i] << endl;
	}


	cout << "-----------------" << endl;

	//
	//	for (vector<int>::iterator it = v.begin(); it != v.end(); ++it)
	//	{
	//		cout << (*it) << endl;
	//	}
	//

	return 0;
}

C++

답변 1

0

Rookiss

image

코드가 살짝 다릅니다 !

0

성민

헉; 감사합니다 ㅠㅠ

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

546

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

445

1

strcpy() 구현 관련 질문

0

519

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

461

1

클래스 타입의 포인터 질문합니다

0

550

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

501

1

템플릿 특수화 관련 질문

0

387

1

포인터 관련 질문합니다!

0

267

1

Unable to start assembler. Check your settings.

0

840

2

cpu선택

0

543

1

포인터 질문이 있습니다

0

330

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

588

1

iterator 삭제관련

0

410

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

315

1

15 분 45초 대 질문

0

312

0

스택 프레임 질문합니다!

2

309

1

오른값 참조 in 게임

0

387

0

동적할당 질문이 있습니다

0

452

1

안녕하세요 메모리에 대해 질문드립니다.

0

309

1

함수객체 의 매개변수

0

365

1

복사생성자

0

439

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

426

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

358

1

스택 오버플로우

2

794

1