forkpty()和execl()上子进程的堆内存管理
Heap memory management of child process upon forkpty() and execl()?
我在Linux中开发了一个c++应用程序。我正在分配一些动态内存,并最终调用forkpty()。子进程正在调用execl(),正如我们所知,如果执行命令成功,execl()永远不会返回。此外,正如我们所知,forkpty()会复制所有父节点的数据。因此,如果child()进程从未将控制权返回给我的应用程序,以便最终进行内存清理,那么在从子进程调用execl()时最好不要分配任何动态内存,这是否安全?我不敢相信我在这里找不到这个…
分配的内存是进程映像的一部分;当你打来电话execl
,整个进程映像被替换,并且它只是像其他部分一样"消失",回到操作系统,然后在其他地方使用它。
所有"分叉"的进程内存都作为execl()
的一部分被释放(如果调用成功)。
如果不是这种情况,在常规linux系统中会有很多内存泄漏,因为几乎不可能在不分配内存的情况下编写任何东西,甚至有点复杂,并且,例如,如果分配给execl()
的参数,则不可能在调用execl()
之前释放它们。
相关文章:
- 当vector是tje全局变量时,c++中vector的内存管理
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- C++将字符串传递给 C 库以进行内存管理
- 从函数返回时C++内存管理
- 函数指针和 lambda 的内存管理
- 自定义内存管理器在发布模式下工作正常,但在调试模式下则不然
- C++中的内存管理
- C和C++中的内存管理有什么区别
- 字符 * 未从重载运算符或内存管理问题正确返回
- 如何在源代码中使用执行策略检测 C++17 的扩展内存管理算法的可用性?
- 底层指针和内存管理
- 智能指针,避免使用QNetworkAccessManager时进行手动内存管理
- c++中的内存管理问题
- 使用矢量时的内存管理
- 循环和内存管理中的指针算术C++?
- C++堆栈内存管理问题
- C 内存管理中的课程如何管理 - 研究
- 不可变数据模型的内存管理
- C++ 使用数组初始化时的 STL 向量内存管理
- SFML 纹理内存管理