Solving memory can't be a read problem

  

Some users have reported that when running certain programs, sometimes there will be a memory error prompt, and then the program will be closed. What is the problem? Let's take a look at it.

“0x????????”The instruction refers to “0x????????” memory. This memory cannot be “read”.

“0x????????”The reference to the "0x????????” memory, the memory can not be "written".

There are aspects of this phenomenon. One is hardware, that is, there is a problem with memory, and the other is software. This has many problems.

A: First talk about hardware:

In general, computer hardware is not easy to break. The possibility of memory problems is not great (unless your memory is really a mess), the main aspects are: 1. Memory is broken (second-hand memory is mostly), 2. Using memory with quality problems, 3. The gold finger on the motherboard is too dusty. 4. Incompatibility occurs when memory of different brands of different capacities is used. 5. The problem of heat dissipation from the hyperband. You can use MemTest to detect memory, which can completely detect memory stability.

Second, if there is none, then troubleshoot from the software side.

First, the principle: memory has a place to store data called buffer, when the program puts the data in the buffer, you need the operating system to provide the "function function" to apply, if the memory allocation is successful, the function The newly created memory area address is returned to the application, and the application can use this memory through this address. This is "dynamic memory allocation", the memory address is also in the programming "cursor". Memory is not always coming in, it is inexhaustible, and sometimes memory allocation will fail. When the allocation fails, the system function returns a value of 0. At this time, the return value “0” does not indicate the newly enabled cursor, but a notification sent by the system to the application to inform that an error has occurred. As an application, you should check whether the return value is 0 after applying for memory every time. If it is, it means that there is a failure, and some measures should be taken to save it, which enhances the program's "robustness". If the application does not check for this error, it will follow the "inertia" thinking that this value is the available cursor assigned to it and continue to use this memory in subsequent executions. The real 0 address memory area stores the most important "interrupt descriptor table" in the computer system, and the application is never allowed to be used. 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 The operating system is forcibly closed by the operating system to prevent its error from expanding. At this time, the above memory will not be a "read" error and indicate that the referenced memory address is “0x00000000“. There are many reasons for memory allocation failure failures, memory shortage, system function version mismatch, etc. may have an impact. Therefore, this allocation failure is more common after the operating system has been used for a long time, after installing a variety of applications (including inadvertently "installed" virus program), after changing a large number of system parameters and system files.

In applications that use dynamic allocation, sometimes this happens: the program tries to read and write a piece of memory that should be available, but for some reason, the cursor available in this expectation has expired. . It may be that "forgot" " to the operating system to request the allocation, it may be that the program itself has written off the memory at some point and "not pay attention" & so on. The unregistered memory is reclaimed by the system, and its access right is no longer in the application. Therefore, the read and write operations will also trigger the system's protection mechanism. The only end of the program that attempts to “illegal” is to be terminated by the operation, and all the recovery is completed. Resources. The laws of the computer world are still much more effective and stricter than humans! Situations like this are all bugs in the program itself, and you can often reproduce errors in a specific order of operations. The invalid cursor is not always 0, so the memory address in the error prompt is not necessarily "0x00000000", but other random numbers.

First suggestion:

1. Check if there is a Trojan or virus in the system?

2. Update the operating system and let the operating system installer recopy the correct version of the system. File, correct system parameters. Sometimes the operating system itself will have a bug, pay attention to the installation of the official release of the upgrade program.

3, try to use the latest official version of the application, Beta, trial version will have a BUG.

4. Delete and recreate the files in the WinntSystem32WbemRepository folder: Right-click My Computer on the desktop and click Manage. Under "Services & Applications", click Services, then close and stop the Windows Management Instrumentation service. Delete all the files in the WinntSystem32WbemRepository folder. (Create a backup copy of these files before deleting them.) Open "Services & Applications", click Services, then open and start the WindowsManagementInstrumentation service. When the service is restarted, these files are recreated based on the information provided in the following registry key: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWBEMCIMOMAutorecoverMOFs

Copyright © Windows knowledge All Rights Reserved