0

我有一个正在 Linux 中开发的 C++ 应用程序。我正在分配一些动态内存并最终调用 forkpty()。子进程正在调用 execl(),我们知道,如果成功执行命令,则 execl() 永远不会返回。此外,正如我们所知,forkpty() 会复制所有父级的数据。因此,如果 child() 进程永远不会将控制权返回给我的应用程序以最终进行内存清理,是否可以肯定地说在从子进程调用 execl() 时没有分配任何动态内存更好? ? 我不敢相信我在这里找不到这个……在此先感谢。

4

2 回答 2

1

分配的内存是过程映像的一部分;当您调用 时 execl,整个进程映像将被替换,其中的任何内存都会像其余部分一样“消失”,返回到操作系统,然后操作系统将在其他地方使用它。

于 2013-04-04T13:38:14.107 回答
1

所有“分叉”进程内存都作为一部分被释放execl()(如果调用成功)。

如果不是这种情况,整个常规 linux 系统都会出现大量内存泄漏,因为几乎不可能在不分配内存的情况下编写任何甚至有点复杂的东西,例如,如果execl()分配了 to 的参数,你不可能在调用之前释放它们execl()

于 2013-04-04T13:39:29.303 回答