PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 请教fork/exec关于memory release
楼主:
Keitaro
(动き出す时间...)
2020-10-14 18:04:02
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
请教各位 假设我要在linux底下执行CreateProcess的动作
如底下程式码所示
如果fork产生的child process在exec之前还是跑从
parent process拷贝而来的程式码
exec之后就跑要执行的程式了
child process应该也有new了一份char array
那为何child process不需要delete[] p呢?
我这个char array是要传给exec的参数(把p_sArg/p_sEnv做处理然后传送)
在底下的example就省略parser argument的部分
只用个p示意而已
感谢各位先进的指导
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
example:
void CreateProcess(char* p_sAppName, char* p_sArg, char* p_sEnv)
{
char *p = new char[10];
int pid = fork();
......
......
if (pid == 0)
{
exec(...);
}
else if (pid > 0)
{
waitpid(pid , 0, 0);
}
else
{
printf("error");
}
delete[] p;
}
作者:
b0920075
(Void)
2020-10-14 19:09:00
kernel 会帮你处理好,没差,反正等等execve 就会把内存内容洗成新的 process 要用的
作者:
ucrxzero
(RX-0)
2020-10-15 10:34:00
https://stackoverflow.com/questions/23440132/fork-a
fter-malloc-in-parent-does-the-child-process-need-to-free-it/23440176这篇说exec要 execvp不用
作者:
LPH66
(-6.2598534e+18f)
2020-10-15 10:48:00
楼上应该漏看了叙述, 他是说如果没有呼叫 exec* 系列函数的话那就需要, 而如果呼叫了 exec* 系列 (如 execvp) 就免(exec* 系列底层都会归到 execve 系统呼叫所以可以一起看)
继续阅读
[问题] -fPIC代表VM共享库段映射到同一段PM?
ucrxzero
[问题] Graphviz 在 hackmd 使用上小问题
mickey94378
[问题] C address返回后被改变了(已解决)
simon860730
Re: [讨论] C++ 读取资料后如何抓取目标值?
loveme00835
[问题] UDP传输问题
peng0116
[讨论] C++ 读取资料后如何抓取目标值?
forthcoming5
[问题] 求档 C言教学手册第四版光盘 洪维恩
wizard6636
[问题] vector如何包成dll传给C#调用
su27
Re: [问题] 版本字串比较
gn00618777
Re: [问题] cpp的function pointer传递
tinlans
Links
booklink
Contact Us: admin [ a t ] ucptt.com