|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ malloc 在定义数据空间大小的疑问
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1243
人关注过本帖
标题:
malloc 在定义数据空间大小的疑问
只看楼主
加入收藏
share32
等 级:
黑侠
帖 子:214
专家分:663
注 册:2011-12-1
结帖率:
60%
楼主
收藏
已结贴
√
问题点数:20 回复次数:11
malloc 在定义数据空间大小的疑问
有一个全局int指针变量a
a=(int*)malloc(sizeof(int));
在函数a()给指针a[0]到a[4]赋值.
在函数b()中有一个int指针变量b
b=(int*)malloc(sizeof(int));
在函数b()给指针b[0]到b[4]赋值.
我的问题是有没有可能在给b连续复制的时候, a已使用的内存空间收到影响?
搜索更多相关主题的帖子:
影响
空间
函数
2012-02-22 14:41
举报帖子
使用道具
赠送鲜花
icysky
来 自:心灵世界
等 级:
职业侠客
威 望:
1
帖 子:172
专家分:399
注 册:2011-5-17
第
2
楼
收藏
得分:5
不一定吧!
比如说
分配给a的内存区域两端已经使用过了
那么再分配给b的内存
肯定应该不会和分配给a的内存相邻
话说
楼主这样做 很危险啊!
不管怎么走、总有一个终点...
2012-02-22 15:40
举报帖子
使用道具
赠送鲜花
share32
等 级:
黑侠
帖 子:214
专家分:663
注 册:2011-12-1
第
3
楼
收藏
得分:0
回复 2楼 icysky
那定义的时候是不是应该这样:
a=(int*)malloc(MAXSIZE*sizeof(int));
MAXSIZE为最大值?
2012-02-22 17:03
举报帖子
使用道具
赠送鲜花
慕羿
等 级:
业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
第
4
楼
收藏
得分:0
不会有影响的,除非你访问的数组越界了。不过那就是另一回事了,和分配无关。
已经被分配的内存在被释放之前是不会再被分配的。
2012-02-22 19:26
举报帖子
使用道具
赠送鲜花
慕羿
等 级:
业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
第
5
楼
收藏
得分:5
你应该逐一给数组中的每一个元素赋值,用3楼的方法不正常,会使得编译器不能起到防错作用。
而顶楼的语句仅仅给了数组第一个位置赋值,其它位置上还没有值。
2012-02-22 19:28
举报帖子
使用道具
赠送鲜花
share32
等 级:
黑侠
帖 子:214
专家分:663
注 册:2011-12-1
第
6
楼
收藏
得分:0
回复 5楼 慕羿
a=(int*)malloc(sizeof(int));
a[0]=1;
a[2]=2;
这样是可以的,但是只有a[0]申请了空间,
a[1]并没有,可是这两个的地址是连续的。
我不知道这么定义是否合法?
a[1]的值会不会出现问题?
2012-02-22 21:01
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
7
楼
收藏
得分:5
回复 楼主 share32
兩空間中的數據是否受影響,要看分配得到的這兩個空間的相對位置,那不是你的代碼決定的,也不要假定這樣分配得到的空間必定在連續位置。也就是說,可能影響,也可能沒影響。
授人以渔,不授人以鱼。
2012-02-22 23:12
举报帖子
使用道具
赠送鲜花
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
8
楼
收藏
得分:0
回复 6楼 share32
肯定不合法。你这不是明知故问吗……
2012-02-22 23:27
举报帖子
使用道具
赠送鲜花
慕羿
等 级:
业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
第
9
楼
收藏
得分:5
以下是引用
share32
在2012-2-22 21:01:27的发言:
a=(int*)malloc(sizeof(int));
a[0]=1;
a[2]=2;
这样是可以的,但是只有a[0]申请了空间,
a[1]并没有,可是这两个的地址是连续的。
我不知道这么定义是否合法?
a[1]的值会不会出现问题?
这样的定义不合法,有可能导致对数组的访问越出栈,或者改变了其它变量的值等等问题。
2012-02-23 08:28
举报帖子
使用道具
赠送鲜花
fahfuq
等 级:
论坛游民
帖 子:30
专家分:23
注 册:2012-1-21
第
10
楼
收藏
得分:0
飘过
2012-02-23 09:57
举报帖子
使用道具
赠送鲜花
12
1/2页
1
2
快速回复:
malloc 在定义数据空间大小的疑问
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.043634 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved