c语言中,程序结束时,动态内存会释放吗?是由谁释放的?
2个回答
展开全部
1 从C语言本身设计来说,不会释放。
所谓动态内存,是由malloc系列函数进行申请的内存,除非在程序中使用free释放,否则该段内存不会被释放掉。
从这个角度来说,即使进程结束,该段内存也会被占用。这种现象被称为内存泄露。
2 大多数操作系统可以智能释放。
动态内存由于是进程使用,向操作系统控制方申请的内存,所以操作系统内核可以记录哪些内存由哪个进程使用,这样为了减少内存泄露的危害,操作系统内核均实现了在进程退出后,进程分配的自用内存自动回收的机制。
3 仍要避免在书写只分配不释放的代码。
作为代码编写者,要遵从C语言要求的自行释放不用内存的规则,使程序尽量少占用资源。否则是对内存资源的浪费。
所谓动态内存,是由malloc系列函数进行申请的内存,除非在程序中使用free释放,否则该段内存不会被释放掉。
从这个角度来说,即使进程结束,该段内存也会被占用。这种现象被称为内存泄露。
2 大多数操作系统可以智能释放。
动态内存由于是进程使用,向操作系统控制方申请的内存,所以操作系统内核可以记录哪些内存由哪个进程使用,这样为了减少内存泄露的危害,操作系统内核均实现了在进程退出后,进程分配的自用内存自动回收的机制。
3 仍要避免在书写只分配不释放的代码。
作为代码编写者,要遵从C语言要求的自行释放不用内存的规则,使程序尽量少占用资源。否则是对内存资源的浪费。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询