我有一个在Linux上开发的C ++应用程序。我分配了一些动态内存并最终调用了forkpty()。子进程正在调用execl(),正如我们所知,execl()在成功执行命令时永远不会返回。此外,正如我们所知,forkpty()会复制所有父数据。因此,如果child()进程永远不会将控制权返回给我的应用程序以便最终进行内存清理,那么说从子进程调用execl()时最好不要分配任何动态内存吗? ?我无法相信我在这里找不到这个......提前致谢。
答案 0 :(得分:1)
分配的内存是过程映像的一部分;你打电话的时候
execl
,替换整个过程映像,并替换任何内存
它只是像其他部分一样“消失”,返回操作系统,
然后将在其他地方使用它。
答案 1 :(得分:1)
所有“分叉”进程内存都被释放为execl()
的一部分(如果调用成功)。
如果不是这种情况,那么普通的Linux系统会出现大量的内存泄漏,因为在没有分配内存的情况下编写任何东西都是不可能的,例如,如果参数为execl()
已分配,在调用execl()
之前,您无法释放它们。