OpenEdv-开源电子网

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

请教原子哥,dhcp申请栈内存为什么要使用内存堆的方式

[复制链接]

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2016-10-19 10:59:15 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 liuchang 于 2016-10-19 11:00 编辑

[mw_shl_code=c,true]u8 lwip_comm_mem_malloc(void)
{
        u32 mempsize;
        u32 ramheapsize;
        mempsize=memp_get_memorysize();
        memp_memory=mymalloc(SRAMIN,mempsize);
        ramheapsize=LWIP_MEM_ALIGN_SIZE(MEM_SIZE)+2*LWIP_MEM_ALIGN_SIZE(4*3)+MEM_ALIGNMENT;
        ram_heap=mymalloc(SRAMIN,ramheapsize);      
        TCPIP_THREAD_TASK_STK=mymalloc(SRAMIN,TCPIP_THREAD_STACKSIZE*4);    //这里可以采用栈内存的方式申请嘛(我之前在创建ucos任务的时候都是创建栈空间)?使用堆方式有啥优点?                                                                                                               
//为什么申请的空间是LWIP_DHCP_STK_SIZE*4,这里为什么是*4?为了4字节对齐?还是?
         LWIP_DHCP_TASK_STK=mymalloc(SRAMIN,LWIP_DHCP_STK_SIZE*4);  
        if(!memp_memory||!ram_heap||!TCPIP_THREAD_TASK_STK||!LWIP_DHCP_TASK_STK)
        {
                lwip_comm_mem_free();
                return 1;
        }
        return 0;        
}[/mw_shl_code]



最佳答案

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

用的时候才申请,用完就释放。不浪费内存。
电子爱好者
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-10-19 10:59:16 | 显示全部楼层
用的时候才申请,用完就释放。不浪费内存。
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2016-10-19 16:31:57 | 显示全部楼层
先自顶下
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
 楼主| 发表于 2016-10-21 08:58:40 | 显示全部楼层
正点原子 发表于 2016-10-19 10:59
用的时候才申请,用完就释放。不浪费内存。

原子哥:那为什么不使用栈内存方式呢?连回收都不需要...
电子爱好者
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 03:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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