Memory Leak 3

fragments 에서 view binding을 사용하기 위한 패턴

아래는 google이 보여줬던 기본 패턴이다. 그냥 이것을 바탕으로 살을 붙이면 된다. binding 변수를 사용하는 이유 _binding은 nullable 이라서 매번 _binding?.okButton 같은거 해주기 불편해서이다.(출처) onDestoryView()에서 _binding 에 null을 대입 하는 이유 memory leak 방지 private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: Layo..

C Runtime 환경의 메모리 릭 잡는 방법 ( Memory Leak )

간단히 메모리 릭 발생여부를 알아내고 이를 해결하는 방법에 대해서 알아봅시다. 이는 MS 사에서 CRT(C Runtime) 라이브러리로 제공해는 CRTDBG 를 이용할 겁니다. 생각보다 쉬운 반면 그 기능은 막강하지요. 일단 프로그램 정의부에 다음과 같이 추가합니다. #include #define CRTDBG_MAP_ALLOC #ifdef _DEBUG #define new new( _NORMAL_BLOCK, __FILE__, __LINE__ ) //궁금하시면 제 게시글 중 편을 보세요. #endif 이제 메인 진입 부 처음에 다음과 같이 선언합니다. 일반 main() 이라고 가정합니다. 물론 WinMain() 일 수도 있습니다. void main() { _CrtSetDbgFlag( _CRTDBG_ALLO..

메모리 릭(메모리 유출, memory leak)을 잡아보자

많은 프로그래머들이 프로그램을 짜면서... 메모리 릭을 많이 발생시킵니다.. 대수롭지 않게 생각하는 프로그래머들이 많은데.. 실상은 가장 심각한 버그 중에 하나입니다.. 당부 말씀드리자면... 제발 그러지 말아 주세요.. ㅎㅎ 그럼 메모리 릭을 어떻게 잡아야할까요.. 코드 짤때부터 새지 않도록 짜는게 중요하지만.. 인간인 이상 완벽할 수 없습니다.. 그럴땐 도움을 받아야 합니다.. 다음 코드 보시죠.. #include #ifdef _DEBUG #define new new(_CLIENT_BLOCK, __FILE__, __LINE__) #endif void main() { _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); int* a = new..