gpt4 book ai didi

CreateProcess 和 lpCommandLine 生命周期

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:52 25 4
gpt4 key购买 nike

我在 CreateProcess 函数中为参数 lpCommandLine 分配内存,使用 malloc 或在堆栈上。

我能否在调用后立即释放/释放该内存,还是必须等到进程完成?

最佳答案

lpCommandLine 引用的缓冲区需要仅在调用 CreateProcess 期间有效。一旦 CreateProcess 返回,它就不会再次引用该缓冲区。

想象一下,如果您确实必须让该缓冲区保持事件状态。如果是这样,那么所有父进程都必须比它们的所有子进程都长寿。这显然是一个荒谬的提议,我相信您会从经验中知道没有这样的要求。

这里有一个总的原则。总的来说,API 函数在函数返回后不会引用它们的参数。如果他们确实需要这样做,那么它将在文档中被明确地调用,或者从函数的意图中显而易见。作为后者的一个例子,我正在考虑将一个窗口过程传递给 RegisterClass。很明显,只要存在该类的窗口,窗口过程就必须保持有效。

关于CreateProcess 和 lpCommandLine 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com