기금넷 공식사이트 - 경제 뉴스 - 컴퓨터에 다음과 같은 대화 상자가 나타납니다. 0x77d616881의 0x00ffffff를 "읽을 수 없습니다".
컴퓨터에 다음과 같은 대화 상자가 나타납니다. 0x77d616881의 0x00ffffff를 "읽을 수 없습니다".
가끔 그런 일이 있는데 별거 아니니 걱정하지 마세요.
매우 귀찮은 문제이며, 자주 발생하면 위험하므로 시스템을 다시 설치해야 합니다.
메모리를 읽거나 쓸 수 없는 일반적인 이유
Windows 운영 체제를 사용하는 사람들은 때때로 "0X 명령에서 참조하는 메모리 0x00000000을 쓸 수 없습니다"라는 오류 메시지를 접합니다. , 그러면 응용 프로그램이 닫힙니다. 일부 '전문가'에게 조언을 구하면 "윈도우가 너무 불안정하다"는 분노와 경멸이 돌아오는 경우가 많다. 실제로 이 오류는 반드시 Windows 불안정으로 인해 발생하는 것은 아닙니다. 이 기사에서는 이 오류의 일반적인 원인을 간략하게 분석합니다.
1. 애플리케이션이 메모리 할당 실패를 확인하지 않았습니다
프로그램이 데이터를 저장하기 위해 메모리 조각이 필요한 경우 운영 체제에서 제공하는 "함수 함수"를 호출해야 합니다. 메모리 할당이 성공하면 함수는 새로 열린 메모리 영역의 주소를 응용 프로그램에 반환하고 응용 프로그램은 이 주소를 통해 이 메모리를 사용할 수 있습니다. 이것이 "동적 메모리 할당"이며, 프로그래밍에서 메모리 주소는 "포인터"이기도 합니다.
메모리는 항상 사용 가능하고 무한하지 않으며 때로는 메모리 할당이 실패할 수도 있습니다. 할당이 실패하면 시스템 함수는 0 값을 반환합니다. 이때 반환 값 "0"은 더 이상 새로 활성화된 포인터를 나타내는 것이 아니라 시스템이 응용 프로그램에 오류가 있음을 알리는 알림을 나타냅니다. 발생했습니다. 응용 프로그램으로서 메모리를 적용할 때마다 반환 값이 0인지 확인해야 합니다. 그렇다면 오류가 발생했음을 의미하며 이를 저장하기 위해 몇 가지 조치를 취해야 합니다. 이렇게 하면 프로그램의 "견고함"이 향상됩니다.
애플리케이션이 이 오류를 확인하지 않으면 이 값이 "생각하는 관성"에 따라 할당된 사용 가능한 포인터라고 생각하고 후속 실행에서 이 메모리를 계속 사용하게 됩니다. 주소 0의 실제 메모리 영역은 컴퓨터 시스템에서 가장 중요한 "인터럽트 설명자 테이블"을 저장하며 응용프로그램에서는 이를 절대 사용할 수 없습니다. 보호 메커니즘이 없는 운영 체제(예: DOS)에서 이 주소에 데이터를 쓰면 즉시 충돌이 발생합니다. Windows와 같은 강력한 운영 체제에서는 이 작업이 시스템의 보호 메커니즘에 의해 즉시 캡처되며 그 결과는 다음과 같습니다. 운영 체제는 오류가 확산되는 것을 방지하기 위해 잘못된 응용 프로그램을 강제로 닫습니다. 이때, 위에서 언급한 "메모리 쓰기" 오류가 나타나며 참조된 메모리 주소가 "0x00000000"임을 지적합니다.
메모리 할당 실패에는 여러 가지 이유가 있습니다. 메모리 부족, 시스템 기능 버전 불일치 등이 영향을 미칠 수 있습니다. 따라서 이러한 종류의 할당 실패는 운영 체제를 오랫동안 사용한 후, 다양한 응용 프로그램(실수로 "설치"된 바이러스 프로그램 포함)을 설치한 후, 많은 수의 시스템 매개 변수 및 시스템 파일이 변경되었습니다.
2. 애플리케이션 자체 버그로 인해 비정상적인 메모리 포인터를 참조합니다.
동적 할당을 사용하는 애플리케이션에서는 때때로 다음과 같은 상황이 발생합니다. "사용 가능해야 함" 메모리 블록을 작성했지만 어떤 이유로 예상되는 사용 가능한 포인터가 만료되었습니다. 운영 체제에 할당을 요청하는 것을 "잊었"거나 프로그램 자체일 수도 있습니다.