| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1210 人关注过本帖
标题:内存不能为写
只看楼主 加入收藏
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用farmerbee在2006-3-10 13:14:00的发言:

终于知道问题出在哪里了,谢谢啊!!不过还有。。
void main()
{
char * p;//此时p指向一个随机内存
printf("1. %p\n",p);

p= (char *)malloc(2*sizeof(char));//此时p指向经malloc分配两个char大小的内存

printf("2. %p\n",p);

p="hello word";//此时p指向“hello word”所在的静态内存

printf("3. %p\n",p);
//printf出来看看p的值的变化,你对指针的理解不够
p[0]='a';
p[1]='r';
printf("%s",p);
}
意思就是要经过MALLOC 分配后的内存才能写,那么这里p[0] p[1]两个空间应该是经过分配的,为什么不能写呢?


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-03-10 13:22
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
得分:0 
斑竹教训的是,今天受益非浅啊,我要是个女的一定嫁给你  哈哈  可惜不是
2006-03-10 13:29
chudong
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-3-10
收藏
得分:0 
我想可能是这样的:那个负值语句使得编译器认为,要讲一个常量的值改变。所以不行的。

上天的安排?
2006-03-14 22:42
high20033763
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2006-2-13
收藏
得分:0 
63369是不可读的地址编号啊,在他机上,每个人的操作系统都有一些内存是不能为读的,是保留的,否则就倒退到DOS时代了
2006-03-15 10:05
快速回复:内存不能为写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014651 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved