使用Ctrl-C中断程序时如何释放动态分配的空间?

4sh*_*1sh 9 c c++ memory-management

给出以下代码:

#include <stdio.h>

int main()
{
    int *p;
    p = (int *)malloc(10 * sizeof(int));

    while(1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当上面的代码被编译和运行,并且在执行时被按下时被中断Ctrl+C,如何分配p释放的内存?这里的操作系统有什么作用?它与使用new运算符的C++的情况有何不同?

Set*_*gie 13

当进程终止时,操作系统将回收进程正在使用的所有内存.

即使操作系统收回应用程序在终止时使用的内存,人们也会因为内存泄漏而造成大量内存泄漏的原因是,通常非平凡的应用程序会长时间运行,慢慢吞噬系统上的所有内存.对于寿命很短的程序来说,这不是一个问题.(但你永远无法分辨一个单行程何时会成为一个巨大的程序,所以即使在小程序中也不会有任何内存泄漏.)