它是流动的C代码中的内存泄漏吗?
#include <stdlib.h>
int *a;
int main() {
a = malloc(sizeof(int)*10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
至少大多数人使用这个术语的方式,答案是肯定的 - 程序分配的任何内存从未被释放被视为泄漏.
与此同时,大多数人主要关注渐进式泄漏 - 在程序运行时可能/将逐渐泄漏更多内存,例如在循环内进行分配,以及无法释放内存.
特别是对于真正需要一些内存以便在程序的整个生命周期中保持分配的东西,在退出之前释放和离开分配直到退出完成之间的区别之间的区别变得更像是分裂的问题而不是真正有用的区别.有些人认为分配内存是一种讽刺,即使它只是在退出之前立即释放.其他人将其视为浪费代码(以及对错误的邀请),以便在退出之前立即释放内存(当任何设计合理的操作系统无论如何都会重新获得进程的资源时).