Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我有一个包含大型结构的全局变量:
typedef struct { char Big[1024] } LARGE; static LARGE x; void main() { free(x); }
当我不再需要它时,我可以安全地从 main 调用 free(x) 吗?
不,您没有动态分配x,因此不需要(也不能)释放它。
x
如果您绝对需要在程序退出之前释放内存,请将指针声明为全局,按需分配它,使用mallocor calloc,然后free在完成结构时使用它。
malloc
calloc
free
static LARGE* x; void main() { x = malloc(sizeof(*x)); // use x free(x); }
不,free只能用于解除分配已通过调用分配的对象malloc。
具有静态存储持续时间的对象只能在程序退出时释放。