나는 며칠 동안 악명 높은 EXC_BAD_ACCESS 오류를 디버깅하고 있습니다. NSZombieEnabled = YES는 아무 것도 제공하지 않습니다. 호출 스택은 오류가 발생할 때마다 달라졌습니다. 오류는 매 5 ~ 6 회 실행됩니다.Guard Malloc이 즉시 EXC_BAD_ACCESS 오류를 발견했습니다. 왜 항상 사용하지 않습니까?
루 프랑코의 웹 사이트 Understanding EXC_BAD_ACCESS에서 guard malloc (Xcode 4의 스키마 편집기에 있음)을 사용하기위한 팁을 보았습니다. 이 작업을 마친 후 내 프로그램은이 어려운 오류를 일으키는 정확한 행에서 중지되었습니다.
설명에 따르면 guard malloc은 모든 malloc에 대해 별도의 페이지를 생성하고 메모리가 해제 될 때 전체 페이지를 삭제하므로 해제 된 메모리에 액세스 할 때 프로그램이 충돌합니다. 일반적인 개발을 위해, 왜 그냥 malloc을 항상 지키지 않을까요? 그것은 특정 유형의 메모리 오류를 쉽게 잡는 것 같습니다. 메모리 관리 나 성능을 특별히 테스트하지 않는다면, 메모리 관리 나 성능에 약간의 단점이 있습니까?