关于局部变量数据是否需要释放,恳请指教

2019-07-20 20:15发布

本帖最后由 liuchang 于 2016-9-7 09:35 编辑

[mw_shl_code=c,true]void tcp_server_thread(void *arg)
{        
        struct netconn *conn;
        
        conn = netconn_new(NETCONN_TCP);
        netconn_bind(conn, IP_ADDR_ANY, 8080);
        netconn_listen(conn);
        
        while(1)
        {
                uint8_t *buf, flag, info[51];
                uint16_t buflen;
                struct netconn *newconn; //1>我在这里申请了newconn
                struct netbuf *inbuf;
               
                if(netconn_accept(conn, &newconn) != ERR_OK)
                {
                        netconn_close(newconn);
                        netconn_delete(newconn); //2>假如程序能够跑到这里,删除这个局部变量
                        netbuf_delete(inbuf);
                        continue; //3>如果netconn_delete()被注释掉,程序接下来重新进入while(1),                                                                          //会再次创建newconn吗(之前的newconn栈内存会释放吗)?还是会将之前的newconn给覆盖掉?
                }[/mw_shl_code]
问题在程序注释部分,恳请大神指教


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
冰封嗜魔
1楼-- · 2019-07-20 20:31
*newconn,*inbuf你这两个指针是野指针,没有实际分配内存,无法使用。如果使用netconn_new(NETCONN_TCP)申请了内存,不主动释放是一直会占用的。
ianhom
2楼-- · 2019-07-20 21:39
 精彩回答 2  元偷偷看……
yuzeyuan1
3楼-- · 2019-07-20 22:07
ianhom 发表于 2016-9-7 10:31
newconn貌似没有指向任何实体,netconn_delete能删除吗?局部变量是在进入函数后再栈上申请的,退出函数后 ...

就是说局部变量根本不用主动释放掉是么?
ianhom
4楼-- · 2019-07-20 22:08
yuzeyuan1 发表于 2016-9-7 10:36
就是说局部变量根本不用主动释放掉是么?

存在于栈上的局部变量不需要程序员主动释放

一周热门 更多>