일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 다형성
- Smart Pointer
- 루아
- Effective c++
- 메타테이블
- 예외
- 비교 함수 객체
- 영화
- 영화 리뷰
- 언리얼
- implicit conversion
- exception
- 티스토리챌린지
- c++
- UE4
- virtual function
- 스마트 포인터
- 오블완
- resource management class
- 반복자
- more effective c++
- 참조자
- effective stl
- reference
- 상속
- 암시적 변환
- 함수 객체
- operator new
- 게임
- lua
- Today
- Total
목록c++ (138)
스토리텔링 개발자
개요 벡터 반복자를 사용해서 순회 중 새 요소를 추가하는 순간 크래시가 발생했습니다. 컴파일러 특성에 따라 다를 수도 있겠지만, 컴파일러의 특성에 기반한 코드는 위험하니 이 용법은 문제가 있다고 봐도 무방합니다. 어떤 점이 문제였을까요. 문제 파악 이해를 돕기 위해 코드를 첨부합니다. vector test; test.push_back(1); test.push_back(1); test.push_back(1); for(auto it = test.begin() ; it != test.end() ; ++it) { test.push_back(1); } 마지막에 요소가 추가되었으므로 반복자는 문제 없이 계속 루프를 돌면 되지 않았을까요? 이 코드의 문제는 벡터가 일정 크기의 메모리를 미리 마련해둔다는 점입니다. 일..
직렬화 프로그램은 메모리에 올라가게 됩니다. 그러니 프로그램 내의 객체들도 메모리에 올라가 있을 것입니다. 그렇다면 그 객체들은 메모리에 어떤 형태로 올라가 있을까요? . . . 답은 알 수 없다 입니다. 컴퓨터가 메모리를 관리하면서 배정하므로 하나의 객체라도 연속적으로 모여있다고 단정지을 순 없습니다. 즉, 운 좋게 한 곳에 모두 모여 있는 경우도 있을테지만, 반대로 여기 저기 심하게 파편화 되어 있을 수도 있다는 것이죠. 이 객체의 데이터를 전송 / 저장하려 한다고 가정해 보죠. 그러기 위해선 우선 메모리의 어디에 어떻게 위치할지 모를 객체의 데이터들을 모아야 할 것입니다. 사실 직렬화란 그것이 전부입니다. 데이터를 모으고 전송하기 위해 패키징하는 작업을 뜻합니다. 현재 객체의 상태를 온전히 동일한 ..