1、内存申请与释放
1、用calloc申请的内存如果作为返回值的话,可以在外面释放。
例如:
char *uci_getvalue()
{
char *value = calloc(1, strlen(ptr.o->v.string)+1);
if (!value)
goto error;
strcpy(value, ptr.o->v.string);
return value;
}
int web_wifi_mode_set()
{
char *uv_mesh_enable = NULL;
uv_mesh_enable = uci_getvalue(WIFI_MODE_MESH_CFG);
if(uv_mesh_enable ) free (uv_mesh_enable );
return ret;
}
这些因为需要申请内存的时候不知道大小,所以只能申请成指针形式的,在uci_getvalue中申请的内存,在函数内部没有释放,所以在web_wifi_mode_set调用的时候去释放。申请过的内存一定要释放。
用calloc在函数内部申请的指针return到函数外,然后在另外一个函数外释放,这种操作是可行的
2、内存的申请malloc和calloc
与malloc唯一的区别是在于calloc在返回地址之前将申请的空间全部初始化为0
3、申请过的内存一定要释放,要不然产生碎片,最终导致系统不能正常运行
2、内存池
内存池不容易产生碎片
版权声明:本文为qq_36741413原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。