일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Vector
- 영화 리뷰
- 참조자
- exception
- 스마트 포인터
- 예외
- virtual function
- implicit conversion
- 언리얼
- effective stl
- 비교 함수 객체
- more effective c++
- Smart Pointer
- UE4
- 영화
- 게임
- 다형성
- reference
- operator new
- 암시적 변환
- 상속
- Effective c++
- 오블완
- c++
- 메타테이블
- 루아
- lua
- 반복자
- resource management class
- 티스토리챌린지
- Today
- Total
목록operator new (4)
스토리텔링 개발자
항목 8 : new와 delete의 의미를 정확히 구분하고 이해하자 ‘new 연산자’와 ‘operator new’의 차이string* ps = new string("Memory Management"); // new 연산자가 사용되었다.new 연산자C++에서 기본으로 제공한다.sizeof가 그런 것처럼, 동작 원리를 바꾸는 것이 불가능하다.동작 단계요청 타입의 객체를 담을 수 있는 크기의 메모리를 할당한다.(이 동작이 operator new 함수 호출로 동작된다.)객체의 생성자를 호출하여 할당된 메모리의 객체 초기화를 수행한다.operator new객체로 담을 메모리를 할당하는 방법이다.new 연산자는 필수적인 메모리 할당을 위해 operator new를 호출하게 되어 있다. operator new..
항목 51. new 및 delete를 작성할 때 따라야 할 기존의 관례를 잘 알아두자 operator new 구현 시 요구사항반환값이 제대로 되어 있어야 한다.가용 메모리가 부족할 경우 new 처리자 함수를 호출해야 한다. (항목 49 참조)크기가 없는(0바이트) 메모리 요청에 대한 대비를 해야 한다.실수로 ‘기본(normal)’ 형태의 new가 가려지지 않도록 해야 한다. (항목 52 참조) 요구사항을 지키며 operator new 구현구현?요청된 메모리를 마련해 줄 수 있는 경우그 메모리에 대한 포인터를 반환한다.요청된 메모리를 마련해 줄 수 없는 경우bad_alloc 타입의 예외를 던지면 된다. (항목 49 참조)말로는 쉽지만 실제 구현은 꽤 까다롭다.. 문제점operator new는 메모리..
항목 50 : new 및 delete를 언제 바꿔야 좋은 소리를 들을지를 파악해두자 operator new / delete를 커스텀하는 이유잘못된 힙 사용 탐지를 위해new 한 메모리에 대해 delete를 잊으면 메모리 누수가 발생한다.new 한 메모리에 두번 이상 delete 하면 미정의 동작을 한다.할당된 메모리 주소의 목록을 operator new가 유지하고 delete에서 제거하게 만들면 실수를 방지할 수 있을 것이다.데이터 오버런(overrun, 할당된 메모리 블록 끝을 넘어 뒤에 기록), 데이터 언더런(underrun, 할당된 메모리 블록 시작을 넘어 앞에 기록)이 발생할 수 있다.메모리를 약간 더 할당해서 오버런 / 언더런 탐지용 바이트 패턴을 구현할 수 있다.효율을 향상시키기 위해컴파일..
항목 16. new 및 delete를 사용할 때는 형태를 반드시 맞추자 new와 delete의 내부동작 순서new 연산자operator new 함수 내부에서 메모리를 할당한다.할당된 메모리에 대해 한 개 이상의 생성자 호출된다.delete 연산자할당된 메모리에 대해 한 개 이상의 소멸자가 호출된다.operator delete 함수 내부에서 메모리를 해제한다. delete로 삭제되는 포인터의 종류delete로 삭제되는 포인터는 아래 두 종류 중 하나이다.하지만, 각각은 메모리 배치 구조가 다르다.단일 객체메모리 배치 : [ object ]객체의 배열메모리 배치 : [ n ][ object ][ object ][..n은 배열의 크기 정보.delete 연산자는 자신에게 넘어온 포인터 종류가 둘 중 무..