mirror of
https://github.com/python/cpython.git
synced 2025-10-14 02:43:49 +00:00
Added words about what PyArena_Malloc() does.
This commit is contained in:
parent
cb9426b5f4
commit
6fd92dc44f
2 changed files with 17 additions and 5 deletions
|
@ -35,11 +35,23 @@ extern "C" {
|
||||||
PyAPI_FUNC(PyArena *) PyArena_New(void);
|
PyAPI_FUNC(PyArena *) PyArena_New(void);
|
||||||
PyAPI_FUNC(void) PyArena_Free(PyArena *);
|
PyAPI_FUNC(void) PyArena_Free(PyArena *);
|
||||||
|
|
||||||
PyAPI_FUNC(void *) PyArena_Malloc(PyArena *, size_t);
|
/* Mostly like malloc(), return the address of a block of memory spanning
|
||||||
|
* `size` bytes, or return NULL (without setting an exception) if enough
|
||||||
|
* new memory can't be obtained. Unlike malloc(0), PyArena_Malloc() with
|
||||||
|
* size=0 does not guarantee to return a unique pointer (the pointer
|
||||||
|
* returned may equal one or more other pointers obtained from
|
||||||
|
* PyArena_Malloc()).
|
||||||
|
* Note that pointers obtained via PyArena_Malloc() must never be passed to
|
||||||
|
* the system free() or realloc(), or to any of Python's similar memory-
|
||||||
|
* management functions. PyArena_Malloc()-obtained pointers remain valid
|
||||||
|
* until PyArena_Free(ar) is called, at which point all pointers obtained
|
||||||
|
* from the arena `ar` become invalid simultaneously.
|
||||||
|
*/
|
||||||
|
PyAPI_FUNC(void *) PyArena_Malloc(PyArena *, size_t size);
|
||||||
|
|
||||||
/* This routines isn't a proper arena allocation routine. It takes
|
/* This routine isn't a proper arena allocation routine. It takes
|
||||||
a PyObject* and records it so that it can be DECREFed when the
|
* a PyObject* and records it so that it can be DECREFed when the
|
||||||
arena is freed.
|
* arena is freed.
|
||||||
*/
|
*/
|
||||||
PyAPI_FUNC(int) PyArena_AddPyObject(PyArena *, PyObject *);
|
PyAPI_FUNC(int) PyArena_AddPyObject(PyArena *, PyObject *);
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ PyArena_Malloc(PyArena *arena, size_t size)
|
||||||
arena->total_blocks++;
|
arena->total_blocks++;
|
||||||
arena->total_block_size += arena->a_cur->ab_size;
|
arena->total_block_size += arena->a_cur->ab_size;
|
||||||
if (arena->a_cur->ab_size > DEFAULT_BLOCK_SIZE)
|
if (arena->a_cur->ab_size > DEFAULT_BLOCK_SIZE)
|
||||||
arena->total_big_blocks++;
|
++arena->total_big_blocks;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return p;
|
return p;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue