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);
从堆中申请的内存需要手动释放。也就是说 malloc
和 free
是配对的,通过 malloc
申请的内存需要 free
掉。