mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00

svn+ssh://pythondev@svn.python.org/python/trunk ........ r71920 | jeroen.ruigrok | 2009-04-25 21:44:55 +0200 (za, 25 apr 2009) | 5 lines Issue #4129: More documentation pointers about int -> Py_ssize_t. Also fix up the documentation for PyObject_GC_Resize(). It seems that since it first got documented, the documentation was actually for _PyObject_GC_Resize(). ........ r71921 | jeroen.ruigrok | 2009-04-25 21:46:19 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: Documentation notes for int -> Py_ssize_t changes. ........ r71922 | jeroen.ruigrok | 2009-04-25 21:49:05 +0200 (za, 25 apr 2009) | 2 lines Reformat, since I've been busy here anyway. ........ r71923 | jeroen.ruigrok | 2009-04-25 21:54:34 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: Add a versionchanged notice for a few forgotten entries. ........ r71925 | jeroen.ruigrok | 2009-04-25 22:37:39 +0200 (za, 25 apr 2009) | 2 lines Since it's a macro, actually refer to it as such instead of function. ........ r71926 | jeroen.ruigrok | 2009-04-25 22:40:10 +0200 (za, 25 apr 2009) | 2 lines Reformat prior to editing. ........ r71927 | jeroen.ruigrok | 2009-04-25 22:41:40 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: int -> Py_ssize_t documentation. ........ r71928 | jeroen.ruigrok | 2009-04-25 22:43:30 +0200 (za, 25 apr 2009) | 2 lines Reformat prior to editing. ........ r71929 | jeroen.ruigrok | 2009-04-25 22:44:58 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: int -> Py_ssize_t documentation. ........ r71931 | jeroen.ruigrok | 2009-04-25 22:50:27 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: int -> Py_ssize_t documentation. ........ r71932 | jeroen.ruigrok | 2009-04-25 22:55:39 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: more int -> Py_ssize_t documentation. ........ r71933 | jeroen.ruigrok | 2009-04-25 22:58:35 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: more int -> Py_ssize_t documentation. ........ r71934 | jeroen.ruigrok | 2009-04-25 23:02:34 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: field changed from int to Py_ssize_t. ........ r71937 | jeroen.ruigrok | 2009-04-25 23:16:05 +0200 (za, 25 apr 2009) | 2 lines Issue #4129: document int -> Py_ssize_t changes. ........
83 lines
3 KiB
ReStructuredText
83 lines
3 KiB
ReStructuredText
.. highlightlang:: c
|
|
|
|
.. _allocating-objects:
|
|
|
|
Allocating Objects on the Heap
|
|
==============================
|
|
|
|
|
|
.. cfunction:: PyObject* _PyObject_New(PyTypeObject *type)
|
|
|
|
|
|
.. cfunction:: PyVarObject* _PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
|
|
|
|
.. versionchanged:: 2.5
|
|
This function used an :ctype:`int` type for *size*. This might require
|
|
changes in your code for properly supporting 64-bit systems.
|
|
|
|
|
|
.. cfunction:: PyObject* PyObject_Init(PyObject *op, PyTypeObject *type)
|
|
|
|
Initialize a newly-allocated object *op* with its type and initial
|
|
reference. Returns the initialized object. If *type* indicates that the
|
|
object participates in the cyclic garbage detector, it is added to the
|
|
detector's set of observed objects. Other fields of the object are not
|
|
affected.
|
|
|
|
|
|
.. cfunction:: PyVarObject* PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
|
|
|
|
This does everything :cfunc:`PyObject_Init` does, and also initializes the
|
|
length information for a variable-size object.
|
|
|
|
.. versionchanged:: 2.5
|
|
This function used an :ctype:`int` type for *size*. This might require
|
|
changes in your code for properly supporting 64-bit systems.
|
|
|
|
|
|
.. cfunction:: TYPE* PyObject_New(TYPE, PyTypeObject *type)
|
|
|
|
Allocate a new Python object using the C structure type *TYPE* and the
|
|
Python type object *type*. Fields not defined by the Python object header
|
|
are not initialized; the object's reference count will be one. The size of
|
|
the memory allocation is determined from the :attr:`tp_basicsize` field of
|
|
the type object.
|
|
|
|
|
|
.. cfunction:: TYPE* PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)
|
|
|
|
Allocate a new Python object using the C structure type *TYPE* and the
|
|
Python type object *type*. Fields not defined by the Python object header
|
|
are not initialized. The allocated memory allows for the *TYPE* structure
|
|
plus *size* fields of the size given by the :attr:`tp_itemsize` field of
|
|
*type*. This is useful for implementing objects like tuples, which are
|
|
able to determine their size at construction time. Embedding the array of
|
|
fields into the same allocation decreases the number of allocations,
|
|
improving the memory management efficiency.
|
|
|
|
.. versionchanged:: 2.5
|
|
This function used an :ctype:`int` type for *size*. This might require
|
|
changes in your code for properly supporting 64-bit systems.
|
|
|
|
|
|
.. cfunction:: void PyObject_Del(PyObject *op)
|
|
|
|
Releases memory allocated to an object using :cfunc:`PyObject_New` or
|
|
:cfunc:`PyObject_NewVar`. This is normally called from the
|
|
:attr:`tp_dealloc` handler specified in the object's type. The fields of
|
|
the object should not be accessed after this call as the memory is no
|
|
longer a valid Python object.
|
|
|
|
|
|
.. cvar:: PyObject _Py_NoneStruct
|
|
|
|
Object which is visible in Python as ``None``. This should only be accessed
|
|
using the :cmacro:`Py_None` macro, which evaluates to a pointer to this
|
|
object.
|
|
|
|
|
|
.. seealso::
|
|
|
|
:cfunc:`PyModule_Create`
|
|
To allocate and create extension modules.
|
|
|