对于这点 C 魔法,我总是有点模糊。当您调用 execv 时,您正在“替换进程映像”。这到底是什么意思呢?只是 DATA 段?一切都分配给进程?堆栈?堆?
我的问题是您传递给 execv 的参数所使用的存储会发生什么变化?如果它们是调用 execv 的函数的局部变量,那么它们就在堆栈上。但是如果你替换进程映像,并调用新进程的 main() 函数,当 main() 返回时会发生不好的事情,因为从主调用指向返回位置的堆栈信息被新进程映像替换。变量也一样,是吗?如果这些变量是在堆上分配的呢?
探究的头脑正在询问任何知道的人。