| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1016 人关注过本帖
标题:有没有可以在指定地址上分配内存的函数?
只看楼主 加入收藏
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
结帖率:0
收藏
 问题点数:0 回复次数:6 
有没有可以在指定地址上分配内存的函数?
malloc分配的内存地址是随机的,有没有可以在指定地址上分配内存的函数?
2015-09-10 23:00
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
这可不是随机的,是在指定区域寻找一块足够大的内存分配的

一片落叶掉进了回忆的流年。
2015-09-10 23:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没有

授人以渔,不授人以鱼。
2015-09-10 23:47
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
可以在指定地址写入数据
程序代码:
要对绝对地址0x100000赋值,我们可以用
(unsigned int*)0x100000 = 1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
*((void (*)( ))0x100000 ) ( );
首先要将0x100000强制转换成函数指针,即:
(void (*)())0x100000
然后再调用它:
*((void (*)())0x100000)();
用typedef可以看得更直观些:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0x100000)();

一片落叶掉进了回忆的流年。
2015-09-11 00:00
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
收藏
得分:0 
回复 楼主 li362490567
那样的话,必须知道哪个地址是空的,是否这些空地址是连着的,我遇到realloc的时候出问题,如果x占用了地址1-6,y占用了7-10,再对x用realloc赋予10的时候就把y给占了,所以地址还是很头疼的问题,这个问题很有用啊。
2015-09-11 09:03
lv740542742
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2015-9-9
收藏
得分:0 
回复 4楼 诸葛欧阳
程序代码:
要对绝对地址0x100000赋值,我们可以用
(unsigned int*)0x100000 = 1234;

给绝对地址0x100000赋值是这样的吧:*(unsigned int*)0x100000 = 1234;
2015-09-11 09:15
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
公共地方,估计只有政府部门才有权指定位置使用,其他的小P民乱自指定位置会乱套的,除非你能保证自己独享所有资源。

能编个毛线衣吗?
2015-09-11 09:37
快速回复:有没有可以在指定地址上分配内存的函数?
数据加载中...
 
   



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

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