请问异常退出的进程其开的动态内存有方法回收吗?

只能进程本身回收?有办法吗?

没懂你这句话,“回收”是什么意思?

一个进程如果退出(正常或异常),它所占有的所有资源(打开没关的fd,malloc()但没free()的内存,没有destroy的mutex/condvar…)都由操作系统作善后处理并回收。

唯一操作系统不能回收的,是如果进程开了共享内存,而有别的进程正在共享。

一个进程用malloc()的内存异常退出后系统会自动回收吗?可是好像不是这样

可以挂载signal函数啊,把异常的信号捕捉到,然后在这个函数里释放内存。

会,系统应该保证自动回收。否则就是操作系统有问题了。