사실 난 이게 난이도 6이라는게 이해가 되지 않는다. 왜냐하면 new 연산자는 컴파일러에 의해서 한가지 단계가 감춰졌을 뿐더러, 쫒아 가기 힘든 구조라, 추론하기도 어렵다. 즉, 일개 프로그래머가 파악하기 힘든 구조이기 때문이다.(... 내가 멍청한 것 일 수도..) 이번 메모리 관리 부분은 그 유명한 Effective C++ 3판 항목 49 ~ 항목 52와 연계해서 보면, 몇가지는 추론을 통해 알 수 있을 것이다. 그렇다면 어떤 문제가 있는지 알아보고, 생각을 해보자.(생각 자체를 할 수 없다면 바로 분석으로 넘어가는게 좋다. 워낙에 정보가 없는 .. 연산자 이니..) 1. class B { public: virtual ~B(); void operator delete ( void*, size_t ) t..
operator new 검색 결과
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이번 항목은 위치지정이라는 재미있는 operator new 를 정의해야 할 때, 조심해야 할 점에 대한 이여기가 주가 된다. 우선 위치지정(placement) operator new 라는것이 생소하게 들릴수 있어도, 크게 무리 없이 이해가 되는 operator new 이다. 이 operator new로 말할것 같으면, 내가 원하는 공간에 메모리를 할당 받을 수 있게 해준다. 원조는 STL vector 에서 쓰였다고 한다. 이런 위치지정(placement)..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 저번 항목까지는 언제 무엇을 위해 new 및 delete를 작성하는지 개념에 대해서 이야기 했지만, 이번 항목에선 어떻게 작성해야 하는지, 그 관례를 들어 설명해 주는 장이다. new 의 관례 1. 메모리 할당이 0바이트라면 1바이트로 간주해야 한다. 2. 메모리 할당 작업은 "무한루프" 안에서 이루어 져야 한다. - 이때 성공하거나 실패했을 때, 이 무한 루프 밖으로 나가야 한다. - 실패 했을 경우, http://ikpil.com/572 처럼 new_..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 new 나 delete 를 바꾸는것이 아니라 operator new 와 operator delete 를 오버로딩 하여 바꾸는 것이다. 그리고 이 오버로딩으로 재정의 되면, 사용자가 일일이 다 지정해 주어야 하는 관례들이 있다. 이 관례를 따라서 구현을 할 때 조금이라도 실수를 한다면, ... 악영향을 많이 미치기 때문에, 굳이 변경 할 여력이 되지 않는다면 변경하지 않는게 더 좋다고 말한다. 기본적으로 컴파일러가 재공하는 operator new 와 ope..
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이번 항목은 new 처리자에 대한 개념과 어디에 주로 사용되는지에 대해서 알려 준다. new 처리자 곰곰히 들으면 잘 모르니, 우선 말로만 설명 풀이 해보자. 우리는 메모리를 할당하기 위해서 new 연산을 이용한다. 하지만 자세히 들어가보면 operator new 가 호출되고 new 가 호출되는 구조로 이어진다. 그러니까 operator new -> new 를 처리 한다. 이때 operator new 는 우리 스스로가 오버로딩 하여 재정의 할 수 있지만 ..
부재 : new와 operator new 의 차이점에 대해서 숙지해라. 이유 1. operator new 와 new 는 엄연히 차이를 보이기 때문이다. 해결방법 .. 각 차이점을 이해 한다. new 연산자는 1. 오버로딩이 안된다. 2. 내부적으로 operator new를 호출한다. 3. 생성자를 호출한다. 4. 객체형 포인터를 반환한다. operator new 는 1. 메모리 할당을 받는다. 2. void *형을 반환한다. delete 역시 마찬가지다. operator new 와 operator delete 는 C++ 판 malloc 과 free 함수 이다. 배열을 new 할때의 차이점 1. new는 똑같지만 내부적으로 operator new[] 를 호출 한다. 2. 그리고 각각 new에 의해서 생성자..
최근댓글