将参数指向PySys_SetArgvEx()的字符串保存在内存中,直到Py_Finalize()?

时间:2015-12-29 12:13:10

标签: python c python-c-api cpython python-embedding

我有以下代码

int nArgs;
if (LPWSTR * const szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs))
{
  PySys_SetArgvEx(nArgs, szArglist, false);
  LocalFree(szArglist);
}

我无法在Python documentation中找到szArglist指向的内存,直到Python关闭或我可以立即释放它。

有人可以对此有所了解吗?

谢谢! 弗拉基米尔

1 个答案:

答案 0 :(得分:1)

Python C API看起来像是使用新的PyList对象来填充args,并为char *参数分配自己的内存。

对于长度超过1个字符的字符串,PySys_SetArgvEx将为字符串malloc自己的内存。

因此,删除传递给PySys_SetArgvEx的任何内存是安全的。