Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

[해결법] MEM_BAD_POINTER 오류 수정 – SmartHeap 라이브러리 팝업 완전히 없애는 방법

일부 Windows 사용자들은 컴퓨터를 켤 때마다 SmartHeap 라이브러리 오류 팝업이 나타난다고 보고하고 있습니다. 이 팝업에 표시되는 오류 메시지는 대부분 MEM_BAD_POINTER입니다. 확인(OK)이든 취소(Cancel)든 어떤 버튼을 눌러도 결과는 같습니다. 컴퓨터 자체는 정상적으로 작동하지만, 다음 시스템 시작 시 동일한 오류 메시지가 다시 나타나는 것입니다.

SmartHeap 라이브러리란 무엇인가?

SmartHeap은 과거 특정 프로그램들이 컴파일될 때 기본 메모리 관리 라이브러리로 사용되던 오래된 인프라입니다.

요즘은 이 메모리 관리 구성 요소에 의존하는 프로그램이 거의 없습니다. 따라서 이 구성 요소가 여러분의 PC에 설치되어 있다면, CorelDRAW, AutoCAD, Adobe Acrobat 등의 구버전(레거시) 프로그램을 설치하면서 함께 들어왔을 가능성이 높습니다.

이제 문제의 원인이 되는 구성 요소를 이해했으니, SmartHeap 라이브러리 팝업과 함께 MEM_BAD_POINTER 오류 메시지를 유발하는 것으로 알려진 주요 원인들을 살펴보겠습니다.

  • 레거시 프로그램의 손상된 설치 – 가장 흔한 원인 중 하나는 SmartHeap 라이브러리를 사용하는 레거시 프로그램이 부분적으로 손상되었거나 일부 파일이 훼손되는 변경을 겪은 경우입니다. 같은 문제를 겪었던 여러 사용자가 문제가 되는 레거시 앱을 복구하거나 제거함으로써 해결했다고 확인했습니다.
  • 부분적으로 호환되지 않는 레거시 앱 – 사용 중인 Windows 버전과 문제를 일으키는 레거시 앱의 버전에 따라, 해당 프로그램을 완벽하게 지원하는 Windows 버전과의 호환성 모드로 실행하도록 설정하면 팝업 자체를 피할 수 있습니다.
  • 손상된 레지스트리 값 – SmartHeap 라이브러리를 호출하는 잔여 레지스트리 키도 이 팝업의 원인이 될 수 있습니다. 대부분의 경우 시작 항목 레지스트리 키가 호출하는 인프라가 더 이상 존재하지 않기 때문에 발생합니다. 이 경우 CCleaner 같은 유틸리티나 수동으로 잔여 레지스트리 키를 제거하면 문제가 영구적으로 해결됩니다.
  • 최근 시스템 변경 – 인프라 관련 Windows 업데이트나 새 드라이버 설치도 이 문제의 원인일 수 있습니다. 이 경우 시스템 복원(System Restore)을 사용하여 현재 문제를 일으키는 요인이 없던 시점으로 PC 상태를 되돌리는 것이 좋습니다.
  • 확인되지 않은 서드파티 충돌 – 이 문제는 Adobe, Corel, AutoCAD의 레거시 애플리케이션과 연관되어 있지만, SmartHeap 라이브러리 인프라를 사용하는 다른 레거시 프로그램에서도 유사한 문제가 발생할 수 있습니다. 이 경우 클린 부팅을 통해 문제를 일으키는 특정 프로세스나 시작 항목을 조사해야 합니다.

잠재적 원인을 모두 살펴보았으니, 이제 실제 사용자들이 성공적으로 활용한 가장 효과적인 해결 방법들을 소개하겠습니다.

방법 1: 레거시 프로그램 복구 또는 제거 (해당하는 경우)

대부분의 사례에서 이 문제는 SmartHeap 라이브러리 메모리 관리 인프라를 사용하는 레거시 프로그램의 손상된 설치 때문에 발생하는 것으로 확인되었습니다. 이 문제는 Windows 7, Windows 8.1, Windows 10에서 모두 발생하는 것으로 보고되었습니다.

주로 CorelDRAW 및 기타 Corel 제품, Adobe Acrobat Reader, AutoCAD의 구버전에서 발생한다고 알려져 있지만, 반드시 그런 것은 아닙니다. 덜 알려진 레거시 프로그램 때문에 MEM_BAD_POINTER 오류가 나타나는 경우도 있습니다.

이 시나리오에 해당한다면, 팝업이 더 이상 나타나지 않도록 레거시 프로그램을 복구하거나 제거하는 것부터 시작하는 것이 좋습니다.

참고: 대개 해당 프로그램의 최신 버전으로 업그레이드할 권리가 있으므로, 현재 Windows 환경과 완전히 호환되지 않는 레거시 소프트웨어를 계속 사용할 이유는 없습니다.

아래 지침에 따라 시스템 시작 시마다 SmartHeap 팝업을 유발하는 레거시 프로그램을 복구하거나 제거해 보세요.

  1. Windows 키 + R을 눌러 실행(Run) 대화 상자를 엽니다. 텍스트 상자에 'appwiz.cpl'을 입력하고 Enter를 눌러 프로그램 및 기능 메뉴를 엽니다.
  2. 프로그램 및 기능 화면에서 설치된 프로그램 목록을 스크롤하여 SmartHeap 모듈을 사용하고 있을 것으로 의심되는 레거시 프로그램을 찾습니다.
  3. 해당 레거시 프로그램을 마우스 오른쪽 버튼으로 클릭하고 나타나는 상황에 맞는 메뉴에서 복구(Repair) 옵션이 있는지 확인합니다. 옵션이 있다면 복구를 클릭하고 화면의 안내에 따라 복구 프로세스를 완료한 후, 컴퓨터를 재시작하여 다음 부팅 시 문제가 해결되었는지 확인합니다.
    참고: 레거시 애플리케이션을 복구할 수 없다면 제거하는 것 외에 선택지가 없습니다. 이 경우 상황에 맞는 메뉴에서 제거(Uninstall)를 선택하세요.
  4. 레거시 프로그램에 대한 변경(복구 또는 제거)을 적용한 후 컴퓨터를 재부팅하고 오류 팝업이 돌아오는지 확인합니다.

여전히 MEM_BAD_POINTER 오류가 발생한다면, 아래의 다음 해결 방법으로 넘어가세요.

방법 2: 호환성 모드로 프로그램 실행

문제가 되는 레거시 프로그램에 따라, 해당 소프트웨어를 완벽하게 지원하는 Windows 버전과의 호환성 모드로 실행하도록 설정하면 문제를 해결할 수 있습니다.

실제로 많은 사용자가 구버전 AutoCAD를 Windows 7 호환성 모드로 실행하도록 설정한 후 문제를 해결했다는 사례가 문서화되어 있습니다.

중요: 이 해결 방법은 레거시 프로그램의 기본 실행 파일이 시작 항목에 의해 매번 시스템 시작 시 호출되는 경우에만 효과적입니다.

AutoCAD든 다른 프로그램이든, 아래 지침에 따라 레거시 프로그램을 호환성 모드로 실행하도록 설정해 보세요.

  1. 이 시작 오류의 원인으로 의심되는 레거시 프로그램의 기본 실행 파일을 마우스 오른쪽 버튼으로 클릭하고, 상황에 맞는 메뉴에서 속성(Properties)을 선택합니다.
  2. 속성 창이 열리면 상단 메뉴에서 호환성(Compatibility) 탭을 클릭합니다.
  3. 다음으로 호환성 모드 체크박스를 선택하고, 필요한 경우 Windows 7 또는 그 이전의 Windows 버전을 선택한 뒤 적용(Apply)을 클릭하여 변경 사항을 저장합니다.
  4. 컴퓨터를 재시작하고 다음 부팅 시 문제가 해결되었는지 확인합니다.

여전히 MEM_BAD_POINTER 오류가 발생한다면, 아래의 다음 해결 방법으로 넘어가세요.

방법 3: 레지스트리 검사 실행

위의 방법들로 문제가 해결되지 않았다면, SmartHeap 라이브러리 인프라가 이미 존재하지 않는데도 이를 계속 호출하는 잔여 레지스트리 키가 남아 있을 가능성을 고려해야 합니다.

이 시나리오에 해당한다면, 문제가 되는 레지스트리 키를 식별하여 제거해야만 문제가 해결됩니다. 하지만 이 오류를 유발할 수 있는 시나리오가 매우 다양하기 때문에 수동 접근은 권장하지 않으며, 잔여 레지스트리 키를 자동으로 식별하고 제거할 수 있는 서드파티 유틸리티를 사용하는 것이 좋습니다.

단계별 지침이 필요하다면, 아래 내용을 따라 CCleaner를 사용하여 더 이상 유효하지 않은 레지스트리 항목을 정리해 보세요.

  1. 기본 브라우저를 열고 CCleaner 공식 다운로드 페이지에 접속합니다. 다운로드 페이지에 들어가면 최신 버전 CCleaner 다운로드가 자동으로 시작됩니다. 시작되지 않으면 다운로드 링크를 클릭하여 수동으로 다운로드를 진행합니다.
  2. 설치 파일 다운로드가 완료되면 더블클릭하여 실행하고, UAC(사용자 계정 컨트롤)에서 관리자 권한을 요청하면 예(Yes)를 클릭합니다. 이후 화면의 안내에 따라 설치를 완료합니다.
  3. 설치가 완료되면 CCleaner를 열고 화면 왼쪽 메뉴에서 레지스트리(Registry)를 클릭합니다.
  4. 레지스트리 화면에서 문제 검색(Scan for Issues)을 클릭하고 검사가 완료될 때까지 기다립니다.
    참고: 이 작업은 레지스트리에서 사용되지 않는 항목들을 제거합니다. 유효한 위치를 더 이상 가리키지 않는 손상된 레지스트리 값과 경로만 처리하므로 시스템에 손상을 주지 않습니다.
  5. 레지스트리 검사가 완료되면 정리(Clean)를 클릭하여 기본 청소를 추가로 수행할 수도 있지만, 이는 선택 사항입니다.
  6. 컴퓨터를 재시작하고 이 검사가 MEM_BAD_POINTER 오류를 해결했는지 확인합니다.

같은 문제가 계속된다면, 아래의 다음 해결 방법으로 넘어가세요.

방법 4: 시스템 복원 지점 사용

이 오류가 최근에 나타나기 시작했다면, 최근의 OS 변경이 원인일 가능성이 높습니다. 같은 문제를 겪었던 여러 사용자가 시스템 복원을 사용하여 문제가 발생하지 않던 시점으로 컴퓨터 상태를 되돌린 후 문제를 해결했다고 확인했습니다.

시스템 복원을 사용해 본 적이 없다면, 이 도구는 사용 가능한 복원 스냅샷이 있는 한 컴퓨터를 정상 상태로 되돌릴 수 있게 해준다는 점을 기억하세요.

참고: 시스템 복원의 기본 동작을 변경하지 않았다면 선택할 수 있는 복원 스냅샷이 충분히 있을 것입니다. 이 유틸리티는 중요한 시스템 변경(새 프로그램 설치, 대규모 Windows 업데이트 등) 직전에 자동으로 새 복원 지점을 생성하도록 설정되어 있기 때문입니다.

이 도구의 작동 방식을 이해했다면, 가장 적합한 복원 스냅샷을 선택하여 배포함으로써 SmartHeap 라이브러리로 인한 팝업을 해결해 보세요.

참고: 이 작업을 진행하면 해당 복원 스냅샷 생성 이후 적용한 모든 변경 사항이 사라진다는 점을 유의하세요.

복원이 완료되면 마지막으로 한 번 더 재부팅하고 팝업이 사라졌는지 확인합니다.

여전히 동일한 MEM_BAD_POINTER 시작 오류가 나타난다면, 아래의 마지막 해결 방법으로 넘어가세요.

방법 5: 클린 부팅 수행

위의 방법들이 모두 효과가 없었다면, 일종의 서드파티 간섭이 이 시작 오류를 일으키고 있을 가능성을 고려해야 합니다. 어떤 프로그램이 원인인지 알 수 없다면, 클린 부팅 모드로 컴퓨터를 시작하여 서드파티 서비스와 시작 항목이 실행되지 않도록 하는 것이 좋은 출발점입니다.

이를 통해 MEM_BAD_POINTER 시작 오류가 서드파티 애플리케이션에 의해 발생하는지 확인할 수 있습니다. 서드파티 앱이 원인임이 확인되면, 비활성화된 항목들을 하나씩 다시 활성화하면서 오류 팝업이 다시 나타날 때까지 체계적으로 범인을 좁혀 나가면 됩니다.

이 과정은 다소 길기 때문에, 전체 과정을 안내하는 단계별 가이드를 준비했습니다.

  1. Windows 키 + R을 눌러 실행(Run) 대화 상자를 엽니다. 그런 다음 'msconfig'를 입력하고 Enter를 눌러 시스템 구성(System Configuration) 도구를 엽니다.
  2. 시스템 구성 도구에서 상단 메뉴의 서비스(Services) 탭을 클릭합니다. 그런 다음 모든 Microsoft 서비스 숨기기(Hide all Microsoft services) 체크박스를 선택합니다.
    참고: 이렇게 하면 Windows 운영에 필수적인 Microsoft 기본 서비스들이 목록에서 숨겨져 실수로 비활성화하는 일을 방지할 수 있습니다.
  3. 이제 서드파티 서비스만 남게 되며, 모두 사용 안 함(Disable all) 버튼을 클릭한 후 적용(Apply)을 눌러 변경 사항을 저장합니다.
  4. 다음으로 시작 프로그램(Startup) 탭을 클릭하고 하단의 작업 관리자 열기(Open Task Manager) 링크를 클릭합니다.
  5. 작업 관리자에서 Microsoft Corporation으로 서명되지 않은 모든 시작 프로그램 항목을 마우스 오른쪽 버튼으로 클릭하고 사용 안 함(Disable)을 선택하여 비활성화합니다.
  6. 관련된 모든 서드파티 시작 항목을 비활성화한 후, 컴퓨터를 일반적으로 재부팅하고 다음 시작이 완료될 때까지 기다립니다.
  7. 다음 시스템 시작 시 MEM_BAD_POINTER 오류가 나타나는지 주의 깊게 살펴봅니다. 오류가 더 이상 나타나지 않는다면 서드파티 구성 요소가 원인이라는 것이 확인된 것입니다. 이제 문제를 일으키는 프로그램을 특정할 차례입니다. 이전에 비활성화했던 시작 항목과 프로세스를 하나씩 다시 활성화하고 재시작을 반복하면서 오류가 돌아오는 순간을 포착하세요.
    참고: 범인을 찾았다면 해당 애플리케이션을 제거하거나, 문제가 되는 서비스/시작 항목을 비활성화 상태로 유지하여 오류가 재발하지 않도록 하세요.
  8. 마지막으로 문제를 해결했다면, 컴퓨터가 매번 클린 부팅 상태로 시작되지 않도록 이전에 비활성화했던 모든 항목을 다시 활성화하는 것을 잊지 마세요.