When you run some programs, you sometimes have a prompt of the memory error, and then the program is turned off. "0x ???????" memory referenced by the instruction. This memory cannot be "Read". The "0x ???????" memory referenced by the "0x ???????" instruction is not "Written". The above situation believes that everyone should have seen, and even some netizens have repeatedly reinstall the system because they are uncommon to frequently appearing. I believe that ordinary users should not understand those complex hexadecimal code. This phenomenon has aspect, one is hardware, ie, there is a problem in memory, and the other is software, which has many problems. One: Let's talk about hardware: Generally, computer hardware is very difficult. The possibility of memory has problems is not large (unless your memory is really a miscellaneous place), the main aspects: 1. The memory bar is broken (multiple memory cases), 2. Memory with quality problems, 3. The gold fingers in the memory are inserted on the motherboard. 4. Use different brands of different capacities of memory, thereby incompatibility. 5. The heat dissipation of overclocking. You can use MEMTEST software to detect memory, which can thoroughly detect the stability of memory. Second, if there is no, it is troubled from software. First, the principle: memory is called the buffer where the data is stored. When the program puts the data in the buffer, the "function function" provided by the operating system is required. If the memory allocation is successful, the function will put the newly opened memory. The 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 the "cursor" in the programming. Memory is not always touched, and sometimes the memory allocation will fail. When the assignment fails, the system function returns an 0 value. At this time, the return value "0" does not represent a newly enabled cursor, but the system is notified to the application, informs the error. As an application, you should check if the return value is 0 after each application, if so, it means that there is a fault, and some measures should be taken, which enhances the "robustness of the program". If the application does not check this error, it will follow "Thinking inertia" to think that this value is assigned the available cursor, continue to use this memory in the subsequent execution. The true 0 address memory is stored in the most important Interrupt Descript Table in the computer system, absolutely not allowing the application to use. Under the operating system without protection (such as DOS), write data to this address will cause immediate use, and in a robust operating system, such as Windows, this operation will be captured immediately by the system's protection mechanism, its result is An error in the error is forcibly turned off by the operating system to prevent errors from expanding. At this time, the above memory cannot be "read" errors, and points out that the referenced memory address is "0x00000000". Many reasons for the fault failure of the memory allocation, the memory is not enough, and the version of the system function does not match may have an impact. Therefore, this distribution failure is more common after the operating system has been used for a long time, including a variety of applications (including unintentional "installation"), changed a lot of system parameters and system files. In applications that use dynamic allocation, there is sometimes such a situation: the program tries to read and write a "should be available" memory, but I don't know why, the cursor available in this expectation has been invalid. It is possible to "forget" to allocate to the operating system, or it may be that the program has been logged out of this memory at a certain time and "not pay attention" and so on. The memory has been reclaimed by the system. Its access is no longer the application. Therefore, the reading and writing operation also triggers the system's protection mechanism, and the only lower end of the "illegal" program is to be executed, reclaim all resources.
The law of the computer world is still more effective than humans! A situation like this belongs to the program itself, and you tend to reproduce an error in a specific operation order. The invalid cursor is not necessarily 0, so the memory address in the error prompt is not necessarily "0x0000000000", but other random numbers. First of all, it is recommended: 1. Check if there is a Trojan or virus in the system. Such procedures are often unreholding systems for control systems, resulting in abnormal operating systems. It should usually strengthen information security awareness, which is not curious about the executable of the source. 2. Update the operating system, let the operating system's installer re-copulate the correct version of the system file, correct the system parameters. Sometimes the operating system itself will have bugs, pay attention to the upgrade program for installing the official release. 3. Try to use the latest official version of the app, beta version, and the trial version will have bugs. 4, delete the file in the Winnt / System32 / WBEM / Repository folder: Right-click on my computer on the desktop, and then click Manage. Under Services and Applications, click Services and shut down and stop Windows Management Instrumentation service. Delete all files in the Winnt / System32 / Wbem / Repository folder. (Please create a backup copy of these files before deleting.) Open "Service and Applications", click Services, then open and start the Windows Management Instrumentation service. When the service restarts, the information provided in the following registry key will be recreated these files: hkey_local_machine / software / microsoft / wbem / cimom / autorecover Mofs Collect several examples to everyone to analyze: Example 1: IE browser appears "0x03713644" memory references referenced by the "0x0A8BA9EF" instruction, or "0x0000000000" memory referenced by the "0x70DCF39F" instruction. This memory cannot be "Read". To terminate the program, click "OK" information box, click "OK", "OK", "OK", "An Internal error, one of the windows you are using is about to turn off", turn off the prompt information, IE browse The device is also closed. Workaround: 1. Start - Run the window, enter "Regsvr32 ACTXPRXY.DLL" Enter, then an information dialog "DllRegisterServer In actXprxy.dll succeeded" appears, OK. Run the following command again. (It is said that this method is not necessary, but to re-register at those .dll system does not hurt, anyway, multi-start, can solve the problem on the line.) Regsvr32 shdocvw.dllregsvr32 oleaut32.dllregsvr32 actxprxy.dllregsvr32 mshtml.dllregsvr32 msjava.dllregsvr32 browseui.dllregsvr32 URLMON.DLL2, fix or upgrade IE browser, and put on the system patch. It is seen that one of the fixes is to restore the system to the initial state of the system. It is recommended to upgrade IE to 6.0. Example 2: Some application errors: "0x14c96730" memory reference for "0x7cd64998" instruction. This memory cannot be "Read". Workaround: Win XP "Pre-Reading" technology This optimization technology is also used on the application, and the system analyzes the first few startups of each application, and then add a virtual description need to use "Memory Image" and store this information to the Windows / Prefetch folder. Once an image is established, the application speed of the application is greatly improved.