首页 > 结构体内的指针需要逐个释放吗?

结构体内的指针需要逐个释放吗?

typedef struct AppInfo {

    char *packageName;

};
char *packageName="com.sina.com";
AppInfo *app=(AppInfo*)malloc(sizeof(AppInfo)*5);
app[i].packageName = (char*) malloc(strlen(packageName));
strcpy(app[i].packageName, packageName);

//直接free app 占用的内存空间就行了吗
free(app);

//还是需要
for(int i=0;i<5;i++)
{
    free(app[i].packageName);
}
free(app);

当然是需要 这样子,毕竟c里面没有c++的析构函数,这些内存关系 都要 自己处理

for(int i=0;i<5;i++)
{
    free(app[i].packageName);
}
free(app);

从堆中申请的内存需要手动释放。也就是说 mallocfree 是配对的,通过 malloc 申请的内存需要 free 掉。

【热门文章】
【热门文章】