这问题其实挺常见的,下面我简单说说可能的原因和解决办法,大家轻喷。
先说问题原因:
第一,程序没检查内存申请有没有成功。
咱们用的软件要存数据的时候,就得跟系统申请一块内存。如果申请成功,系统就会给个地址,程序就拿这个地址来用。这就是所谓的动态内存分配,那个地址也就是我们常说的指针。
但内存不是无限的,有时候申请内存会失败。这时候系统会返回一个0,意思就是没申请成功。这时候这个0不是指针,而是系统在提醒程序:哎,我没法给你内存了。
要是程序不检查这个返回值,就默认继续用这个0地址,那后面就会出问题。因为0地址这块内存是系统最重要的部分,应用程序是不能动的。
在老系统(比如DOS)里,乱动这块内存会直接死机;在现在的系统(比如Windows)里,系统会直接把你这个出错的程序关掉,防止它搞崩溃整个系统。这时候就会提示写内存错误,地址是0x00000000。
这种情况一般是系统用久了,装了一堆软件(包括病毒),改了很多系统设置,导致内存不够或者系统函数版本不匹配。
第二,程序自己有BUG,用了无效的指针。
有时候程序想用一块内存,以为这地址是有效的,结果这地址其实早就被系统回收了。可能是程序忘了申请,也可能是之前释放了这块内存但没注意还在用。
一旦访问已经被系统回收的内存,系统就会认为你在非法操作,直接把你程序干掉。这种情况下提示的错误地址不一定是0,而是别的随机地址。
再说解决办法:
1. 查病毒。
有些病毒乱改系统设置,会导致各种奇怪问题。用杀毒软件扫一下,看看有没有中招。
2. 系统修复或重装。
如果系统文件被改乱了,可以试试系统还原,或者重新安装系统。官方补丁也要记得打,有些系统BUG官方已经修复了。
3. 更新软件。
如果你用的是测试版或者试用版软件,那出问题是正常的。尽量用稳定版本,别贪新。
4. 检查硬件。
如果刚重装完系统就出问题,尤其是内存错误,那可能是内存条有问题。可以换条内存试试。
总结这问题大部分是软件引起的,但也不能完全排除硬件问题。先从软件入手排查,实在不行再考虑硬件。希望对大家有帮助,有啥补充的欢迎评论区聊聊~
先说问题原因:
第一,程序没检查内存申请有没有成功。
咱们用的软件要存数据的时候,就得跟系统申请一块内存。如果申请成功,系统就会给个地址,程序就拿这个地址来用。这就是所谓的动态内存分配,那个地址也就是我们常说的指针。
但内存不是无限的,有时候申请内存会失败。这时候系统会返回一个0,意思就是没申请成功。这时候这个0不是指针,而是系统在提醒程序:哎,我没法给你内存了。
要是程序不检查这个返回值,就默认继续用这个0地址,那后面就会出问题。因为0地址这块内存是系统最重要的部分,应用程序是不能动的。
在老系统(比如DOS)里,乱动这块内存会直接死机;在现在的系统(比如Windows)里,系统会直接把你这个出错的程序关掉,防止它搞崩溃整个系统。这时候就会提示写内存错误,地址是0x00000000。
这种情况一般是系统用久了,装了一堆软件(包括病毒),改了很多系统设置,导致内存不够或者系统函数版本不匹配。
第二,程序自己有BUG,用了无效的指针。
有时候程序想用一块内存,以为这地址是有效的,结果这地址其实早就被系统回收了。可能是程序忘了申请,也可能是之前释放了这块内存但没注意还在用。
一旦访问已经被系统回收的内存,系统就会认为你在非法操作,直接把你程序干掉。这种情况下提示的错误地址不一定是0,而是别的随机地址。
再说解决办法:
1. 查病毒。
有些病毒乱改系统设置,会导致各种奇怪问题。用杀毒软件扫一下,看看有没有中招。
2. 系统修复或重装。
如果系统文件被改乱了,可以试试系统还原,或者重新安装系统。官方补丁也要记得打,有些系统BUG官方已经修复了。
3. 更新软件。
如果你用的是测试版或者试用版软件,那出问题是正常的。尽量用稳定版本,别贪新。
4. 检查硬件。
如果刚重装完系统就出问题,尤其是内存错误,那可能是内存条有问题。可以换条内存试试。
总结这问题大部分是软件引起的,但也不能完全排除硬件问题。先从软件入手排查,实在不行再考虑硬件。希望对大家有帮助,有啥补充的欢迎评论区聊聊~