| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1210 人关注过本帖
标题:内存不能为写
取消只看楼主 加入收藏
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
 问题点数:0 回复次数:5 
内存不能为写

小弟初学,遇到这个问题,执行exps[1]='f';时候出现内存无法写入的提示。能告诉我这是为什么吗?谢谢了~~
#include "stdio.h"
#include "stdlib.h"
int main()
{
char *exps;
exps=(char *)malloc(sizeof(char));
exps="63369";
exps[1]='f';
printf("%c\n",exps[1]);
}

[此贴子已经被作者于2006-3-9 20:04:10编辑过]

搜索更多相关主题的帖子: 内存 
2006-03-09 20:04
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
得分:0 
我是用C-FREE3.5啊,晕死了。
今天好郁闷啊,一个全局变量在一个函数中可以赋值,到了另外一个函数又变成内存不能为READ
2006-03-09 20:29
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
得分:0 
以下是引用feng1256在2006-3-9 22:19:00的发言:

你用malloc才分配了一个字节的内存空间 exps[1]越界了

exps=(char *)malloc(sizeof(char)); →exps=(char *)malloc(10*sizeof(char)); 分配多少你自己定

既然才分配了一个字节的空间,那么exps="63369";这个赋值不是不能完成了吗?
#include "stdio.h"
#include "stdlib.h"
void main()
{
char * p;
p=(char *)malloc(sizeof(char));
p="hello world!!";
printf("%s",p);
}
结果: hello world!!
#include "stdio.h"
#include "stdlib.h"
void main()
{
char * p;
p="hello world !!";
printf("%s",p);
}

结果还是一样,可以解释一下吗?

2006-03-10 12:20
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
得分:0 
我用的是C-FREE 3.5 WINDOW的吗?那那在保护模式下

void main()
{
char * p;
p="hello world !!";
printf("%s",p);
}
这样可以吗?请问这样和没有使用MALLOC函数的区别是什么?
2006-03-10 12:57
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
得分:0 

终于知道问题出在哪里了,谢谢啊!!不过还有。。
void main()
{
char * p;
p= (char *)malloc(2*sizeof(char));
p="hello word";
p[0]='a';
p[1]='r';
printf("%s",p);
}
意思就是要经过MALLOC 分配后的内存才能写,那么这里p[0] p[1]两个空间应该是经过分配的,为什么不能写呢?

2006-03-10 13:14
farmerbee
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-2-27
收藏
得分:0 
斑竹教训的是,今天受益非浅啊,我要是个女的一定嫁给你  哈哈  可惜不是
2006-03-10 13:29
快速回复:内存不能为写
数据加载中...
 
   



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

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