#include<stdio.h> #include<string.h> void main() { char s[20], *f; printf("What's your name?\n"); g

为什么
“0x0040f138”指令引用的“0xcccccccc”内存。该内存不能为“written”。

您好!出现:0x???????? 指令引用的0x????????内存。该内存不能为"read"或"written"。答案【shijan8原创】★严禁复制★
【1】出现该问题原因很多,首先一定要清楚是在什么时候出现该问题,把下面写的看完,对照您电脑出现的问题进行正确的解决。
【2】盗版系统或Ghost版本系统,系统文件错误或丢失,也会出现该问题,及时安装官方发行的补丁,{检查电脑年、月、日是否正确}。用360安全卫士或安装的其它软件进行系统修复,如果修复不能解决,重新安装系统。建议:最好安装【正版】系统或【完整版】系统。
【3】检查驱动是否出现问题,重新安装驱动或及时更新驱动。
【4】病毒引起的:升级杀毒软件或下载专杀工具,清理恶意插件,对电脑全盘杀毒。
【5】硬件引起的:
(1)可能是内存条出现的小问题,关机断电,把内存条拆下清理干净重新安装。必要时更换内存条。(硬件上一般不会出现该问题)
【6】软件引起的:
(1)安装的软件与系统或其它软件发生冲突,盗版或带病毒的软件,请慎重下载软件,最好使用正版。【这里主要说的是检查开机启动项,把没必要启动的启动项禁止开机启动】
(2)如果你的电脑中安装了两款或两款以上的同类软件,比如:两款杀毒软件、两款优化系统软件等,请卸载一款,以免发生冲突,以保持电脑稳定性。
(3)有些系统补丁下载安装了错误补丁,可能与您当前的系统或其它软件发生冲突,也会出现该问题。卸载该补丁,找到适合您电脑补丁,重新下载重新安装。
(4)当下载安装或打开运行播放器、游戏、QQ等第三方软件,出现该问题时。可能是您下载的软件存在着危险,系统本身为了保护系统不受影响,也会出现该内存不能为“read”或“wrtten”。一般的解决办法就是卸载该软件重新安装。如果不能解决,需要更换同类型其它版本的软件,或找到发生冲突的软件卸载它,问题才能解决。
如果上面说的检查都没问题,可以试试下面的方法:看看能不能解决。
◆开始→运行→输入cmd→回车,在命令提示符下输入下面命令
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。
完成后,在输入下面的
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。
如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。(重启电脑)。
●在检查运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks 下,应该只有一个正常的键值{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。【如果还有一个(默认)值不用管它,一般它为空。】必要时【还原】或重新安装系统。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-22
这个问题的出现比较普遍,主要有几个方面:
★★★★☆如果对电脑没有影响或偶尔出现不用管它,下次会自动消失。
【1】病毒引起的,对电脑全盘杀毒。
【2】硬件上的原因,主要是内存条不兼容引起的,必要时更换内存。
【3】系统或其它软件引起的。
【4】打开或关闭IE、QQ、游戏等出现该内存不能为read或written,首先想到可能就是这款软件的问题,(一般来解决办法就是卸载重新安装、升级或更换其它版本,不行只有卸载该软件,问题才能解决)。
(1)系统本身有问题,及时安装官方发行的补丁,必要时重装系统。
(2)某个软件出现的问题,这里主要是看看开机时运行的软件,(用360等检查开机运行的软件,把不必要运行的软件都去掉),软件冲突,卸载有问题的软件。
★下面有两种处理方法可以试试:【如果不行只有恢复或重装系统了】
◆试用命令排除
开始-运行- 输入cmd-- 回车,在命令提示符下输入下面命令
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。
完成后,在输入下面的
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。
怕输入错误,可以复制这条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。
◆◆运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks 下,应该只有一个正常的键值{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。

根据你的程序运行出现此问题,很可能就是你的指针越界,因为从你以上的程序中可以看出你并未为char *f赋值,它也就是一个野指针。
第2个回答  2011-02-22
朋友,电脑出现:【该内存不能为read】,这是你安装的“软件”和电脑中的“内存”有冲突!【答案原创,引用请说明作者:力王历史】,偶然出现,点【取消】即可!

1。电脑里有【木马或病毒】干扰,下载“360安全卫士”和“360杀毒双引擎版”或“金山卫士”和“金山毒霸”,建议“全盘扫描”病毒和木马,修补电脑上的“高危”和重要的【系统漏洞】!
2。【可疑启动项】,下载“360系统急救箱”,或打开360安全卫士,【查杀木马】里的“360系统急救箱”,开始急救,完毕后,重启电脑!开机后,【文件恢复区】,点开:可疑启动项和木马,彻底删除文件!
再:【系统修复】,全选,立即修复!【网络修复】,开始修复。重启电脑!
【金山急救箱】,勾选【扩展扫描】,立即扫描,完毕后,立即处理,重启电脑!
3。你下载的“播放器”,或“聊天软件”,或“IE浏览器”,或“游戏”的【程序不稳定】,或者“版本太旧”!建议卸掉,下载新的,或将其升级为【最新版本】!IE浏览器,和测试版软件不推荐升级!
4。就是你安装了两款或两款以上的同类软件(如:两款播放器,两款qq,或多款浏览器,多款杀毒软件,多款网游等等)!它们在一起【互不兼容】,卸掉“多余”的那一款!
5。你在电脑左下角“开始”菜单里找到【强力卸载电脑上的软件】,找到多余的那款卸掉! 卸完了再“强力清扫”(看准了再卸,别把有用的卸了)!完毕后,重启电脑!
6。再不行,开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入【复制即可】 :
for %1 in (%windir%\system32\*.ocx) do regsvr32 /s %1
粘贴,回车,完毕后,再输入:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
回车!直到屏幕滚动停止为止,重启电脑!
7。重启电脑,开机出完电脑品牌后,按“F8”,进到“安全模式”,光标选定:【最后一次正确设置】,回车,回车,看看效果如何!
8。实在不行就:【一键还原系统或重装系统】!本回答被提问者采纳

#include<stdio.h> #include<string.h> void main() { char s[20...
for %1 in (%windir%\\system32\\*.dll) do regsvr32.exe \/s %1回车。完成后,在输入下面的 for %i in (%windir%\\system32\\*.ocx) do regsvr32.exe \/s %i 回车。如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。(重...

我想用c语言写一个程序 目的屏幕显示:你今天早上吃饭了么 然后用户如果...
include "stdio.h"#include "string.h"int main() {char s[20];printf("你今天早上吃饭了么?\\n");scanf("%s", &s);if(!strcmp(s, "没吃")) {printf("那你饿吗?\\n");} else {printf("味道好吗?\\n");}return 0;}运行结果:...

#include "stdio.h"
include "stdio.h"include <string.h> void main(){ struct w { int nl;char name[20];};struct w w1;struct w *p;p=&w1;strcpy(p->name,"zhang");printf("%s",p->name);} 给字符数组赋值不能直接用等于号。要用strcpy()

求答案,用C语言编程,用户输入一个正整数,把他的各位数字前后颠倒,并输 ...
include <stdio.h> include <string.h> void main (){ int n,i;char s[20];scanf("%d", &n);sprintf(s,"%d", n);printf("%d\\n",strlen(s));for(i=strlen(s)-1;i>=0;i--){ printf("%c",s[i]);} printf("\\n");} 如果要用循环也可以的。补充:include<stdio.h> voi...

#include<stdio.h> #include<stdlib.h> #include<string.h> #includ...
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>struct ima{ int id; char name[20]; char produce[30]; int number; float price;};void Append();void Selldelete();void Amend();void Findin();void Browse();void colorsetting();void Endprogram();void initialization(...

#include<stdio.h> #include<string.h> #include<conio.h> char*fu...
<math.h> include "class.h"using namespace std; \/\/ 使用标准的名空间 int main(int argc, char *argv[]) \/\/ 标准 C++中 必须显式的申明 main 的返回值类型,不写的话有些编译器默认是 int 型 { float l, w, h;...p[i].OutPut();} return 0; \/\/ 记得返回值 } ...

#include<stdio.h> #include<string.h> void fun(char *w,int m...
fun函数从头尾向中间 交换对应字符位置 最终得到一个反序字符串 输出654321

#include<stdio.h> #include<time.h> #include<string.h> #includ...
我稍作修改,VC6下测试无问题,代码如下:include<stdio.h> include<time.h> include<string.h> include<stdlib.h> int main(){ int ch;char ad[6];char tb[7];char adr[6]="admin";char tbr[7]="TurboC";printf("1---GUEST\\n2---ADMIN\\n");scanf("%d",&ch);getchar();switch...

#include<stdio.h> #include<string.h> main() {char a[20]="ABCD\\O...
你如果确信你的数据是"ABCD\\OEFG\\0" D后是\\O(字母O,而不是0)则你的程序运行结果是: ABCDOEFGIJK 如果你的数据是:"ABCD\\0EFG\\0" D后是\\0(数字0)则你的程序运行结果是: ABCDIJK strcat时是从第一个地址位置开始,先找到\\0位置,然后将第二个指针所指的内容连到其后。

c语言关于输入空格的疑惑
这样:include"stdio.h"include"string.h"include"iostream.h"void main(){ char s[20],c;int i=0,k=0,j=0;line: printf("请输入字符");s[i]=getchar();\/\/cin>>s[i];i++;printf("是否继续y\/n");cin>>c;fflush;if (c=='n') {};if(c=='y') goto line;for(i=0;i<...

相似回答