Recently, many netizens have encountered the error message that the memory cannot be "read". I hope the following article will be helpful to everyone.
When running some programs, sometimes a memory error message will appear, and then the program will close.
"0x???????" memory referenced by the "0x????????" instruction. This memory cannot be "read".
"0x???????" memory referenced by the "0x????????" instruction cannot be "written".
I believe everyone has seen the above situation, and some netizens have even reinstalled the system repeatedly because they were unhappy with this error message that often appeared. I believe that ordinary users will not understand those complicated hexadecimal codes.
There are several reasons why this phenomenon occurs. One is hardware, that is, memory problems, and the other is software, which has many problems.
1: Let’s talk about the hardware first:
Generally speaking, computer hardware is not easy to break. The possibility of memory problems is not high (unless your memory is really a piece of junk). The main aspects are: 1. The memory module is broken (mostly second-hand memory), 2. Memory with quality issues is used, 3. The gold finger part where the memory is inserted into the motherboard is too dusty. 4. Use different brands of memory with different capacities, resulting in incompatibility. 5. Heat dissipation issues caused by overclocking. You can use the MemTest software to test the memory, which can thoroughly detect the stability of the memory.
2. If there is none, then troubleshoot the software.
Let’s talk about the principle first: there is a place in the memory to store data called a buffer. When the program puts the data in the buffer, it needs a "functional function" provided by the operating system to apply. If the memory allocation is successful, the function will return the address of the newly opened memory area to the application, and the application can use this memory through this address. This is "dynamic memory allocation", and the memory address is the "cursor" in programming. Memory is not always available and inexhaustible, and sometimes memory allocation fails. When the allocation fails, the system function will return a value of 0. At this time, the return value "0" no longer represents the newly enabled cursor, but a notification sent by the system to the application to inform the application that an error has occurred. As an application, you should check whether the return value is 0 after each application for memory. If it is, it means that a fault has occurred and some measures should be taken to save it. This enhances the "robustness" of the program. If the application does not check this error, it will think that this value is the available cursor assigned to it according to "thinking inertia", and continue to use this memory in subsequent executions. The real memory area at address 0 stores the most important "interrupt descriptor table" in the computer system, and applications are absolutely not allowed to use it. In an operating system without a protection mechanism (such as DOS), writing data to this address will cause an immediate crash. In a robust operating system, such as Windows, this operation will be immediately captured by the system's protection mechanism. The result is that the operating system forcibly closes the erroneous application to prevent the error from expanding. At this time, the above-mentioned memory cannot be "read" error will appear, and it will be pointed out that the referenced memory address is "0x00000000". There are many reasons for memory allocation failure. Insufficient memory, mismatched versions of system functions, etc. may have an impact. Therefore, this kind of allocation failure is more common after the operating system has been used for a long time, after a variety of applications (including virus programs that are inadvertently "installed") are installed, and a large number of system parameters and system files are changed.
In applications that use dynamic allocation, sometimes there will be a situation like this: the program tries to read and write a piece of memory that "should be available", but for some reason, the expected available cursor has expired. It may be that it "forgot" to request allocation from the operating system, or it may be that the program itself has logged off this memory at some point without "paying attention", etc. The unregistered memory is reclaimed by the system, and its access rights no longer belong to the application. Therefore, read and write operations will also trigger the system's protection mechanism. The only fate of a program that attempts to "illegal" is to be terminated by the operation and all resources will be reclaimed. The laws in the computer world are still much more effective and stricter than those of humans! Situations like this are all bugs in the program itself, and you can often reproduce the error in a specific sequence of operations. The invalid cursor is not always 0, so the memory address in the error message is not necessarily "0x00000000", but other random numbers.
First of all, it is recommended:
1. Check whether there are Trojans or viruses in the system?
>2. Update the operating system and let the installation program of the operating system re-copy the correct version of the system files and correct the system parameters. Sometimes the operating system itself may have bugs, so be sure to install the official upgrade program.
3. Try to use the latest official version of the application, Beta version, and trial version as there will be bugs.
4. Delete and then re-create the files in the WinntSystem32WbemRepository folder: Right-click My Computer on the desktop and click Manage. Under Services and Applications, click Services, and then close and stop the Windows Management Instrumentation service. Delete all files in the WinntSystem32WbemRepository folder. (Create a backup copy of these files before deleting them.) Open Services and Applications, click Services, and then open and start the Windows Management Instrumentation service. When the service is restarted, these files will be recreated based on the information provided in the following registry key: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWBEMCMOMOMAutorecoverMOFs
Run the executable file in the compressed package to repair it
Useful
Useful
Useful