求高人指点
PY2.4的Pylist_New函数中对内存检查
nbytes = size * sizeof(PyObject *);
/* Check for overflow without an actual overflow,
* which can cause compiler to optimise out */
if (nbytes / sizeof(PyObject *) !=(size_t)size)
return PyErr_NoMemory();
size为函数传入参数int size
PY2.6的Pylist_New的内存检查
nbytes = size * sizeof(PyObject *);
/* Check for overflow without an actual overflow,
* which can cause compiler to optimise out */
if (size > PY_SIZE_MAX / sizeof(PyObject *))
return PyErr_NoMemory();
其中PY_SIZE_MAX定义为
#ifdef SIZE_MAX
#define PY_SIZE_MAX SIZE_MAX
#else
#define PY_SIZE_MAX ((size_t)-1)
#endif
红色部分让我这个以前自认为C语言达到教师级别的人有点看不明白,有这个必要么?看来我还是只小菜鸟啊。。。