假设我有以下C代码:
int main () {
int *p = malloc(10 * sizeof *p);
*p = 42;
return 0; //Exiting without freeing the allocated memory
}
当我编译和执行C程序时,即在内存中分配了一些空间后,在我退出应用程序和进程终止后,我分配的内存是否仍然被分配(即基本上占用了空间)?
假设我有以下C代码:
int main () {
int *p = malloc(10 * sizeof *p);
*p = 42;
return 0; //Exiting without freeing the allocated memory
}
当我编译和执行C程序时,即在内存中分配了一些空间后,在我退出应用程序和进程终止后,我分配的内存是否仍然被分配(即基本上占用了空间)?
这取决于操作系统.大多数现代(以及所有主要)操作系统都会在程序结束时释放程序未释放的内存.
依赖这一点是不好的做法,最好显式地释放它.问题不仅仅在于您的代码看起来很糟糕.您可能会决定将您的小程序集成到一个较大的、长期运行的程序中.一段时间后,您必须花费数小时来追踪内存泄漏.
依赖操作系统的功能也会降低代码的可移植性.