
나는 메모리 풀을 구현할 때 다음과 같이 구현했다.static T* Pop(){ T* ptr = nullptr; if (!m_pool.empty()) ptr = m_pool.pop(); else ptr = new T; return ptr;}하지만 Pop을 호출하는 순간 엄청난 new의 콜스택이 쌓여 스택 오버플로우가 발생했다. 아무리 생각해도 new가 new를 호출할 일이 뭐가 있지 싶었지만, 얼마 지나지 않아 이유를 찾았다.바로 내가 풀링을 구현한 방식 때문이였다. 클래스에서 매크로를 사용해 new를 오버로딩하게 만들어 new를 호출할 때 오브젝트 풀에서 Pop을 호출하게 하는 식으로 구현했다.ptr = new T;그래서 이 코드에서 또 new를 호출하고 Pop을 하게 만..