OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4487|回复: 4

关于内存管理的函数问题

[复制链接]

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
发表于 2014-10-21 10:44:01 | 显示全部楼层 |阅读模式
5金钱
//分配内存(外部调用)
//memx:所属内存块
//size:内存大小(字节)
//返回值:分配到的内存首地址.
void *mymalloc(u8 memx,u32 size) 

    u32 offset;                
 offset=mem_malloc(memx,size);            
    if(offset==0XFFFFFFFF)return NULL; 
    else return (void*)((u32)mallco_dev.membase[memx]+offset); 


这段函数,返回值不是void吗?怎么还能把地址赋p呢?

最佳答案

查看完整内容[请看2#楼]

楼主看仔细了,返回值不是“void”,是“void*”哦。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2014-10-21 10:44:02 | 显示全部楼层
楼主看仔细了,返回值不是“void”,是“void*”哦。
业余程序玩家。
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1841
金钱
1841
注册时间
2014-6-27
在线时间
982 小时
发表于 2014-10-21 11:56:44 | 显示全部楼层
指针的内存大小都是一样的,只是在使用的时候要指定类型,所以,这里使用空类型指针返回后可以强制转换成任何类型。
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2014-10-21 14:58:11 | 显示全部楼层
2楼讲得对,返回是void *,可以是int *,char *等等任何指针,相当于可以返回随便哪种类型指针变量地址。
小小蜗牛
回复

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-10-21 19:21:01 | 显示全部楼层
回复【4楼】jiutianshenjian:
---------------------------------
回复【3楼】ofourme:
---------------------------------
回复【2楼】TinyBoy:
---------------------------------
谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 01:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表