내 컴퓨터는 "0x303c17c6" 명령이 참조하는 "0x04a23000" 메모리를 계속 생성합니다. 이 메모리는 "읽기" 또는 "쓰기"가 불가능합니다.
메모리를 '읽거나' 쓸 수 없는 문제에 대한 해결책:
어떤 사람들이 레이싱 프로그램을 실행할 때 메모리를 '읽을' 수 없다는 오류 메시지가 나타납니다. 팝업됩니다. 다음 글이 모든 분들에게 도움이 되기를 바랍니다.
윈도우 운영체제를 사용하시는 분들은 가끔 이런 오류 메시지가 뜨는 경우가 있는데, 특정 프로그램을 실행하면 가끔 메모리 오류 메시지가 뜨다가 프로그램이 자동으로 종료되거나 클릭해서 닫을 수 없게 되는 경우가 있습니다. 닫다.
"0x" 명령어가 참조하는 "0x" 메모리입니다. 이 메모리는 "읽을" 수 없습니다.
"0x" 명령이 참조하는 "0x" 메모리는 "쓰기"할 수 없습니다.
비슷한 실패를 경험한 적이 있나요? (0x 이후의 내용은 다를 수 있습니다.)
일반적으로 이러한 현상은 두 가지 측면으로 볼 수 있는데, 하나는 하드웨어, 즉 메모리에 문제가 있다는 것입니다. 두 번째는 문제가 많은 소프트웨어이다.
1. Microsoft IE 버퍼 오버플로 취약점으로 인해 발생함
2. 메모리 또는 가상 메모리 주소 사용 충돌로 인해 프로그램 실행 시 해당 프로그램이 사용할 특정 메모리 주소가 할당됩니다. 프로그램이 끝나면 해제합니다. Win은 멀티 태스킹 시스템입니다. 때로는 이전 프로그램이 완료되기 전에 새 작업이 시작됩니다. 아마도 Win에서 이런 문제가 발생하지 않아서 대규모 소프트웨어나 멀티미디어를 실행한 후에 이런 오류가 자주 발생합니다.
3. 일반적으로 메모리 문제가 발생할 가능성은 크지 않습니다. 주요 측면은 메모리 모듈이 손상되고, 메모리 품질에 결함이 있으며, 서로 다른 두 브랜드와 서로 다른 용량의 메모리가 혼합되어 있다는 것입니다. 동시에 비호환성을 유발할 가능성도 더 높으며, 특히 오버클러킹 문제에도 주의를 기울여야 합니다. MemTest 소프트웨어를 사용하여 메모리를 테스트하면 메모리의 안정성을 철저하게 감지할 수 있습니다. 듀얼 메모리를 사용하고 있고, 서로 다른 브랜드의 메모리 모듈을 혼합하여 사용하거나, 중고 메모리를 구입했는데 이러한 문제가 발생하는 경우 해당 메모리에 문제가 있는지, 다른 하드웨어와 호환되지 않는지 확인해야 합니다.
4. Microsoft WINDOWS 시스템의 취약점. Windows에서는 널 포인터 할당을 위한 주소 범위로 메모리 주소 0X00000000부터 0X0000ffff를 지정합니다. 이 주소에 액세스하려고 하면 오류로 간주됩니다. c/c로 작성된 프로그램은 일반적으로 엄격한 오류 검사를 수행하지 않습니다. malloc을 사용하여 메모리를 할당하고 할당에 사용할 수 있는 주소 공간이 충분하지 않으면 널 포인터가 반환됩니다. 그러나 코드에서는 이런 오류를 확인하지 않고 주소 할당이 성공했다고 생각하여 0X00000000이라는 주소에 접근하게 되므로 메모리 접근 위반이 발생하고 프로세스가 종료된다. ASCII 문자로 구성된 pif 파일을 채울 때 다음 상황이 발생합니다. 시스템이 이를 합법적인 pif 파일로 간주하려면 불법 pif 파일(ascii 문자 \''x\''로 채워짐)이 369바이트 이상이어야 합니다. pif 아이콘이 표시된 경우에만 속성에 "프로그램, 글꼴, 메모리, 화면"과 같은 내용이 있으며 pif가 아닌 파일의 크기가 369바이트인 경우에만 프로그램 오류가 발생하지 않습니다. 속성의 "프로그램" 페이지를 보면 370바이트라도 작동하지 않습니다. 369바이트보다 큰 불법 pif 파일 속성의 "프로그램" 페이지를 보면 오류가 발생합니다. : \''***\''는 ***\''메모리에서 참조됩니다.
메모리를 \''읽을 수\'' 없습니다. 문제는 pif 파일의 16진수 주소인 0x00000181[0x87]0x00000182[0x01] 및 0x00000231[0xC3]0x00000232[0x02]에 있습니다. , 이것을 네 방향 어디에서나 변경하면 프로그램 오류가 발생합니다. 0x00000181과 0x00000182의 값을 [0xFF][0xFF]로 변경하는 한, 다른 주소를 변경해도 오류가 발생하지 않습니다.
5. Apache 서비스가 올바르게 설치 및 시작되지 않을 수 있습니다. 서비스에서 OracleOraHomeXXHTTPServer를 중지하도록 변경하세요.
6. 프로그램이 메모리 할당 실패를 확인하지 않습니다. 메모리를 사용하여 데이터를 저장하는 경우 운영체제에서 제공하는 "함수 함수"를 호출하여 적용해야 합니다. 메모리 할당에 성공하면 함수는 새로 열린 메모리 영역의 주소를 응용 프로그램에 반환합니다. 프로그램과 응용프로그램은 이 메모리를 사용할 수 있습니다. 이것이 "동적 메모리 할당"이며, 프로그래밍에서 메모리 주소는 "포인터"이기도 합니다. 메모리는 항상 사용 가능하고 고갈되지 않는 것이 아니며 때로는 메모리 할당이 실패합니다. 할당이 실패하면 시스템 함수는 0 값을 반환합니다. 이때 반환 값 "0"은 더 이상 새로 활성화된 포인터를 나타내는 것이 아니라 시스템이 응용 프로그램에 오류가 있음을 알리는 알림을 나타냅니다. 발생했습니다. 응용 프로그램으로서 메모리를 적용할 때마다 반환 값이 0인지 확인해야 합니다. 그렇다면 오류가 발생했음을 의미하며 이를 저장하기 위해 몇 가지 조치를 취해야 합니다. 이렇게 하면 프로그램의 "견고함"이 향상됩니다. 애플리케이션이 이 오류를 확인하지 않으면 이 값이 "생각하는 관성"에 따라 할당된 사용 가능한 포인터라고 생각하고 후속 실행에서 이 메모리를 계속 사용합니다. 주소 0의 실제 메모리 영역은 컴퓨터 시스템에서 가장 중요한 "인터럽트 설명자 테이블"을 저장하며 응용프로그램에서는 이를 절대 사용할 수 없습니다. 보호 메커니즘이 없는 운영 체제(예: DOS)에서 이 주소에 데이터를 쓰면 즉시 충돌이 발생합니다. Windows와 같은 강력한 운영 체제에서는 이 작업이 시스템의 보호 메커니즘에 의해 즉시 캡처되며 그 결과는 다음과 같습니다. 운영 체제는 오류가 확산되는 것을 방지하기 위해 잘못된 응용 프로그램을 강제로 닫습니다. 이때, 위에서 언급한 "메모리 쓰기" 오류가 나타나며 참조된 메모리 주소가 "0x00000000"임을 지적합니다. 메모리 할당 실패에는 여러 가지 이유가 있습니다. 메모리 부족, 시스템 기능 버전 불일치 등이 영향을 미칠 수 있습니다. 따라서 이러한 종류의 할당 실패는 운영 체제를 오랫동안 사용한 후, 다양한 응용 프로그램(실수로 "설치"된 바이러스 프로그램 포함)을 설치한 후, 많은 수의 시스템 매개 변수 및 시스템 파일이 변경되었습니다.
7. 애플리케이션이 자체 버그로 인해 비정상적인 메모리 포인터를 참조하는 경우 동적 할당을 사용하는 애플리케이션에서는 때때로 다음과 같은 상황이 발생합니다. "사용 가능해야 합니다." 그러나 어떤 이유로 인해 이 예상 포인터가 유효하지 않게 되었습니다. 운영 체제에 할당을 요청하는 것을 "잊었"거나 프로그램 자체가 "주의를 기울이지" 않은 채 어느 시점에서 이 메모리를 로그오프했을 수도 있습니다. 등록되지 않은 메모리는 시스템에 의해 회수되며 해당 액세스 권한은 더 이상 응용 프로그램에 속하지 않습니다. 따라서 읽기 및 쓰기 작업도 "불법"을 시도하는 프로그램의 유일한 운명은 종료됩니다. 작업에 의해 모든 리소스가 회수됩니다. 컴퓨터 세계의 법률은 여전히 인간의 법률보다 훨씬 더 효과적이고 엄격합니다! 이와 같은 상황은 모두 프로그램 자체의 버그이며 특정 작업 순서에서 오류를 재현할 수 있는 경우가 많습니다. 유효하지 않은 포인터는 항상 0이 아니므로 오류 메시지의 메모리 주소는 반드시 "0x00000000"이 아니라 다른 임의의 숫자입니다.