| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1243 人关注过本帖
标题:malloc 在定义数据空间大小的疑问
只看楼主 加入收藏
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子: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
Rank: 5Rank: 5
来 自:心灵世界
等 级:职业侠客
威 望:1
帖 子:172
专家分:399
注 册:2011-5-17
收藏
得分:5 
不一定吧!
比如说  分配给a的内存区域两端已经使用过了     那么再分配给b的内存  肯定应该不会和分配给a的内存相邻   

话说  楼主这样做 很危险啊!

不管怎么走、总有一个终点...
2012-02-22 15:40
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:0 
回复 2楼 icysky
那定义的时候是不是应该这样:

a=(int*)malloc(MAXSIZE*sizeof(int));

MAXSIZE为最大值?
 
2012-02-22 17:03
慕羿
Rank: 4
等 级:业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
收藏
得分:0 
不会有影响的,除非你访问的数组越界了。不过那就是另一回事了,和分配无关。

已经被分配的内存在被释放之前是不会再被分配的。
2012-02-22 19:26
慕羿
Rank: 4
等 级:业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
收藏
得分:5 
你应该逐一给数组中的每一个元素赋值,用3楼的方法不正常,会使得编译器不能起到防错作用。

而顶楼的语句仅仅给了数组第一个位置赋值,其它位置上还没有值。
2012-02-22 19:28
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分: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
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
回复 楼主 share32
兩空間中的數據是否受影響,要看分配得到的這兩個空間的相對位置,那不是你的代碼決定的,也不要假定這樣分配得到的空間必定在連續位置。也就是說,可能影響,也可能沒影響。

授人以渔,不授人以鱼。
2012-02-22 23:12
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 6楼 share32
肯定不合法。你这不是明知故问吗……
2012-02-22 23:27
慕羿
Rank: 4
等 级:业余侠客
帖 子:40
专家分:206
注 册:2012-2-16
收藏
得分: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
Rank: 2
等 级:论坛游民
帖 子:30
专家分:23
注 册:2012-1-21
收藏
得分:0 
飘过
2012-02-23 09:57
快速回复:malloc 在定义数据空间大小的疑问
数据加载中...
 
   



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

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