我正在寫一個Python C擴展,並在上市here的例子,有一個代碼段:爲什麼我不需要釋放這個內存?
static PyObject * spam_system(PyObject *self, PyObject *args) {
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s", &command)) return NULL;
sts = system(command);
return Py_BuildValue("i", sts);
}
根據解析字符串與PyArg_ParseTuple,「你不能爲提供存儲的文檔字符串本身;指向現有字符串的指針將存儲到您傳遞的地址的字符指針變量中。「那麼Python如何知道「command」指向的內存何時可以被釋放?如何不發生內存泄漏?
它說Python在哪裏釋放內存本身?我假設你完成後需要釋放它。 – delnan 2011-04-09 17:27:26
當它說「一個指向現有字符串的指針」我假設PyArq_ParseTuple不分配內存。雖然不是一個安全的假設,但我會檢查文檔。 – 2011-04-09 17:54:50
@delnan這是我的想法,但當我嘗試釋放內存時,我得到*** glibc檢測到*** python:munmap_chunk():無效指針:0x0000000001ef16dc *** – amoffat 2011-04-09 18:04:32