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

2019-07-20 19:24发布

本帖最后由 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]



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-20 21:01
用的时候才申请,用完就释放。不浪费内存。
liuchang
2楼-- · 2019-07-20 21:57
先自顶下
liuchang
3楼-- · 2019-07-21 01:08
 精彩回答 2  元偷偷看……

一周热门 更多>