0
我想在python中包裝c通信庫,並且在嘗試處理大量數據時遇到一些麻煩。下面的代碼適用於較小的消息,但是當消息大於400MB時,我從PyObject_CallFunction調用中收到以下錯誤:PyObject_CallFunction訪問衝突寫入位置0x0000000c
python.exe中的0x1e00d65f未處理的異常:0xC0000005:訪問衝突寫入位置0x0000000c。
int request_callback(c_request* req, c_msg* msg, void* client)
{
PyGILState_STATE gstate;
PyObject* callback;
PyObject* result;
unsigned int request_addr;
PyObject* py_request_addr;
PyObject* message;
gstate = PyGILState_Ensure();
request_addr = (unsigned int)req;
py_request_addr = PyInt_FromLong(request_addr);
if (PyDict_Contains(request_callback_dict, py_request_addr) == 1)
{
callback = PyDict_GetItem(request_callback_dict, py_request_addr);
message = PyString_FromStringAndSize(msg->data, msg->len);
result = PyObject_CallFunction(callback, "O", message);
}
PyGILState_Release(gstate);
return 0;
}
有什麼想法可能會導致這種情況。謝謝。
檢查你的返回值的錯誤條件,特別是。 PyString_FromStringAndSize。 – Ivo 2010-09-27 15:08:28