forked from AFPy/python-docs-fr
574 lines
18 KiB
Plaintext
574 lines
18 KiB
Plaintext
# SOME DESCRIPTIVE TITLE.
|
|
# Copyright (C) 2001-2016, Python Software Foundation
|
|
# This file is distributed under the same license as the Python package.
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
#
|
|
#, fuzzy
|
|
msgid ""
|
|
msgstr ""
|
|
"Project-Id-Version: Python 3.5\n"
|
|
"Report-Msgid-Bugs-To: \n"
|
|
"POT-Creation-Date: 2016-10-30 10:42+0100\n"
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
"MIME-Version: 1.0\n"
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
#: ../Doc/c-api/memory.rst:8
|
|
msgid "Memory Management"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:17
|
|
msgid "Overview"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:19
|
|
msgid ""
|
|
"Memory management in Python involves a private heap containing all Python "
|
|
"objects and data structures. The management of this private heap is ensured "
|
|
"internally by the *Python memory manager*. The Python memory manager has "
|
|
"different components which deal with various dynamic storage management "
|
|
"aspects, like sharing, segmentation, preallocation or caching."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:25
|
|
msgid ""
|
|
"At the lowest level, a raw memory allocator ensures that there is enough "
|
|
"room in the private heap for storing all Python-related data by interacting "
|
|
"with the memory manager of the operating system. On top of the raw memory "
|
|
"allocator, several object-specific allocators operate on the same heap and "
|
|
"implement distinct memory management policies adapted to the peculiarities "
|
|
"of every object type. For example, integer objects are managed differently "
|
|
"within the heap than strings, tuples or dictionaries because integers imply "
|
|
"different storage requirements and speed/space tradeoffs. The Python memory "
|
|
"manager thus delegates some of the work to the object-specific allocators, "
|
|
"but ensures that the latter operate within the bounds of the private heap."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:36
|
|
msgid ""
|
|
"It is important to understand that the management of the Python heap is "
|
|
"performed by the interpreter itself and that the user has no control over "
|
|
"it, even if she regularly manipulates object pointers to memory blocks "
|
|
"inside that heap. The allocation of heap space for Python objects and other "
|
|
"internal buffers is performed on demand by the Python memory manager through "
|
|
"the Python/C API functions listed in this document."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:49
|
|
msgid ""
|
|
"To avoid memory corruption, extension writers should never try to operate on "
|
|
"Python objects with the functions exported by the C library: :c:func:"
|
|
"`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`. This will "
|
|
"result in mixed calls between the C allocator and the Python memory manager "
|
|
"with fatal consequences, because they implement different algorithms and "
|
|
"operate on different heaps. However, one may safely allocate and release "
|
|
"memory blocks with the C library allocator for individual purposes, as shown "
|
|
"in the following example::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:68
|
|
msgid ""
|
|
"In this example, the memory request for the I/O buffer is handled by the C "
|
|
"library allocator. The Python memory manager is involved only in the "
|
|
"allocation of the string object returned as a result."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:72
|
|
msgid ""
|
|
"In most situations, however, it is recommended to allocate memory from the "
|
|
"Python heap specifically because the latter is under control of the Python "
|
|
"memory manager. For example, this is required when the interpreter is "
|
|
"extended with new object types written in C. Another reason for using the "
|
|
"Python heap is the desire to *inform* the Python memory manager about the "
|
|
"memory needs of the extension module. Even when the requested memory is used "
|
|
"exclusively for internal, highly-specific purposes, delegating all memory "
|
|
"requests to the Python memory manager causes the interpreter to have a more "
|
|
"accurate image of its memory footprint as a whole. Consequently, under "
|
|
"certain circumstances, the Python memory manager may or may not trigger "
|
|
"appropriate actions, like garbage collection, memory compaction or other "
|
|
"preventive procedures. Note that by using the C library allocator as shown "
|
|
"in the previous example, the allocated memory for the I/O buffer escapes "
|
|
"completely the Python memory manager."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:88
|
|
msgid ""
|
|
"The :envvar:`PYTHONMALLOCSTATS` environment variable can be used to print "
|
|
"memory allocation statistics every time a new object arena is created, and "
|
|
"on shutdown."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:94
|
|
msgid "Raw Memory Interface"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:96
|
|
msgid ""
|
|
"The following function sets are wrappers to the system allocator. These "
|
|
"functions are thread-safe, the :term:`GIL <global interpreter lock>` does "
|
|
"not need to be held."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:100
|
|
msgid ""
|
|
"The default raw memory block allocator uses the following functions: :c:func:"
|
|
"`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`; call "
|
|
"``malloc(1)`` (or ``calloc(1, 1)``) when requesting zero bytes."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:108 ../Doc/c-api/memory.rst:176
|
|
msgid ""
|
|
"Allocates *n* bytes and returns a pointer of type :c:type:`void\\*` to the "
|
|
"allocated memory, or *NULL* if the request fails."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:111
|
|
msgid ""
|
|
"Requesting zero bytes returns a distinct non-*NULL* pointer if possible, as "
|
|
"if ``PyMem_RawMalloc(1)`` had been called instead. The memory will not have "
|
|
"been initialized in any way."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:118 ../Doc/c-api/memory.rst:186
|
|
msgid ""
|
|
"Allocates *nelem* elements each whose size in bytes is *elsize* and returns "
|
|
"a pointer of type :c:type:`void\\*` to the allocated memory, or *NULL* if "
|
|
"the request fails. The memory is initialized to zeros."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:122
|
|
msgid ""
|
|
"Requesting zero elements or elements of size zero bytes returns a distinct "
|
|
"non-*NULL* pointer if possible, as if ``PyMem_RawCalloc(1, 1)`` had been "
|
|
"called instead."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:131 ../Doc/c-api/memory.rst:199
|
|
msgid ""
|
|
"Resizes the memory block pointed to by *p* to *n* bytes. The contents will "
|
|
"be unchanged to the minimum of the old and the new sizes."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:134
|
|
msgid ""
|
|
"If *p* is *NULL*, the call is equivalent to ``PyMem_RawMalloc(n)``; else if "
|
|
"*n* is equal to zero, the memory block is resized but is not freed, and the "
|
|
"returned pointer is non-*NULL*."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:138
|
|
msgid ""
|
|
"Unless *p* is *NULL*, it must have been returned by a previous call to :c:"
|
|
"func:`PyMem_RawMalloc`, :c:func:`PyMem_RawRealloc` or :c:func:"
|
|
"`PyMem_RawCalloc`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:142
|
|
msgid ""
|
|
"If the request fails, :c:func:`PyMem_RawRealloc` returns *NULL* and *p* "
|
|
"remains a valid pointer to the previous memory area."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:148
|
|
msgid ""
|
|
"Frees the memory block pointed to by *p*, which must have been returned by a "
|
|
"previous call to :c:func:`PyMem_RawMalloc`, :c:func:`PyMem_RawRealloc` or :c:"
|
|
"func:`PyMem_RawCalloc`. Otherwise, or if ``PyMem_Free(p)`` has been called "
|
|
"before, undefined behavior occurs."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:153 ../Doc/c-api/memory.rst:220
|
|
msgid "If *p* is *NULL*, no operation is performed."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:159
|
|
msgid "Memory Interface"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:161
|
|
msgid ""
|
|
"The following function sets, modeled after the ANSI C standard, but "
|
|
"specifying behavior when requesting zero bytes, are available for allocating "
|
|
"and releasing memory from the Python heap."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:165
|
|
msgid ""
|
|
"The default memory block allocator uses the following functions: :c:func:"
|
|
"`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`; call "
|
|
"``malloc(1)`` (or ``calloc(1, 1)``) when requesting zero bytes."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:171
|
|
msgid ""
|
|
"The :term:`GIL <global interpreter lock>` must be held when using these "
|
|
"functions."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:179
|
|
msgid ""
|
|
"Requesting zero bytes returns a distinct non-*NULL* pointer if possible, as "
|
|
"if ``PyMem_Malloc(1)`` had been called instead. The memory will not have "
|
|
"been initialized in any way."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:190
|
|
msgid ""
|
|
"Requesting zero elements or elements of size zero bytes returns a distinct "
|
|
"non-*NULL* pointer if possible, as if ``PyMem_Calloc(1, 1)`` had been called "
|
|
"instead."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:202
|
|
msgid ""
|
|
"If *p* is *NULL*, the call is equivalent to ``PyMem_Malloc(n)``; else if *n* "
|
|
"is equal to zero, the memory block is resized but is not freed, and the "
|
|
"returned pointer is non-*NULL*."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:206
|
|
msgid ""
|
|
"Unless *p* is *NULL*, it must have been returned by a previous call to :c:"
|
|
"func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` or :c:func:`PyMem_Calloc`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:209
|
|
msgid ""
|
|
"If the request fails, :c:func:`PyMem_Realloc` returns *NULL* and *p* remains "
|
|
"a valid pointer to the previous memory area."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:215
|
|
msgid ""
|
|
"Frees the memory block pointed to by *p*, which must have been returned by a "
|
|
"previous call to :c:func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` or :c:func:"
|
|
"`PyMem_Calloc`. Otherwise, or if ``PyMem_Free(p)`` has been called before, "
|
|
"undefined behavior occurs."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:222
|
|
msgid ""
|
|
"The following type-oriented macros are provided for convenience. Note that "
|
|
"*TYPE* refers to any C type."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:228
|
|
msgid ""
|
|
"Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes "
|
|
"of memory. Returns a pointer cast to :c:type:`TYPE\\*`. The memory will "
|
|
"not have been initialized in any way."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:235
|
|
msgid ""
|
|
"Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n * "
|
|
"sizeof(TYPE))`` bytes. Returns a pointer cast to :c:type:`TYPE\\*`. On "
|
|
"return, *p* will be a pointer to the new memory area, or *NULL* in the event "
|
|
"of failure."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:240
|
|
msgid ""
|
|
"This is a C preprocessor macro; *p* is always reassigned. Save the original "
|
|
"value of *p* to avoid losing memory when handling errors."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:246
|
|
msgid "Same as :c:func:`PyMem_Free`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:248
|
|
msgid ""
|
|
"In addition, the following macro sets are provided for calling the Python "
|
|
"memory allocator directly, without involving the C API functions listed "
|
|
"above. However, note that their use does not preserve binary compatibility "
|
|
"across Python versions and is therefore deprecated in extension modules."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:253
|
|
msgid "``PyMem_MALLOC(size)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:254
|
|
msgid "``PyMem_NEW(type, size)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:255
|
|
msgid "``PyMem_REALLOC(ptr, size)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:256
|
|
msgid "``PyMem_RESIZE(ptr, type, size)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:257
|
|
msgid "``PyMem_FREE(ptr)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:258
|
|
msgid "``PyMem_DEL(ptr)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:262
|
|
msgid "Customize Memory Allocators"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:268
|
|
msgid ""
|
|
"Structure used to describe a memory block allocator. The structure has four "
|
|
"fields:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:272 ../Doc/c-api/memory.rst:373
|
|
msgid "Field"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:272 ../Doc/c-api/memory.rst:373
|
|
msgid "Meaning"
|
|
msgstr "Signification"
|
|
|
|
#: ../Doc/c-api/memory.rst:274 ../Doc/c-api/memory.rst:375
|
|
msgid "``void *ctx``"
|
|
msgstr "``void *ctx``"
|
|
|
|
#: ../Doc/c-api/memory.rst:274 ../Doc/c-api/memory.rst:375
|
|
msgid "user context passed as first argument"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:276
|
|
msgid "``void* malloc(void *ctx, size_t size)``"
|
|
msgstr "``void* malloc(void *ctx, size_t size)``"
|
|
|
|
#: ../Doc/c-api/memory.rst:276
|
|
msgid "allocate a memory block"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:278
|
|
msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:278
|
|
msgid "allocate a memory block initialized with zeros"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:281
|
|
msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:281
|
|
msgid "allocate or resize a memory block"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:283
|
|
msgid "``void free(void *ctx, void *ptr)``"
|
|
msgstr "``void free(void *ctx, void *ptr)``"
|
|
|
|
#: ../Doc/c-api/memory.rst:283
|
|
msgid "free a memory block"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:286
|
|
msgid ""
|
|
"The :c:type:`PyMemAllocator` structure was renamed to :c:type:"
|
|
"`PyMemAllocatorEx` and a new ``calloc`` field was added."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:293
|
|
msgid "Enum used to identify an allocator domain. Domains:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:295
|
|
msgid ""
|
|
":c:data:`PYMEM_DOMAIN_RAW`: functions :c:func:`PyMem_RawMalloc`, :c:func:"
|
|
"`PyMem_RawRealloc`, :c:func:`PyMem_RawCalloc` and :c:func:`PyMem_RawFree`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:298
|
|
msgid ""
|
|
":c:data:`PYMEM_DOMAIN_MEM`: functions :c:func:`PyMem_Malloc`, :c:func:"
|
|
"`PyMem_Realloc`, :c:func:`PyMem_Calloc` and :c:func:`PyMem_Free`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:300
|
|
msgid ""
|
|
":c:data:`PYMEM_DOMAIN_OBJ`: functions :c:func:`PyObject_Malloc`, :c:func:"
|
|
"`PyObject_Realloc`, :c:func:`PyObject_Calloc` and :c:func:`PyObject_Free`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:307
|
|
msgid "Get the memory block allocator of the specified domain."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:312
|
|
msgid "Set the memory block allocator of the specified domain."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:314
|
|
msgid ""
|
|
"The new allocator must return a distinct non-NULL pointer when requesting "
|
|
"zero bytes."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:317
|
|
msgid ""
|
|
"For the :c:data:`PYMEM_DOMAIN_RAW` domain, the allocator must be thread-"
|
|
"safe: the :term:`GIL <global interpreter lock>` is not held when the "
|
|
"allocator is called."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:321
|
|
msgid ""
|
|
"If the new allocator is not a hook (does not call the previous allocator), "
|
|
"the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the "
|
|
"debug hooks on top on the new allocator."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:328
|
|
msgid ""
|
|
"Setup hooks to detect bugs in the following Python memory allocator "
|
|
"functions:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:331
|
|
msgid ""
|
|
":c:func:`PyMem_RawMalloc`, :c:func:`PyMem_RawRealloc`, :c:func:"
|
|
"`PyMem_RawCalloc`, :c:func:`PyMem_RawFree`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:333
|
|
msgid ""
|
|
":c:func:`PyMem_Malloc`, :c:func:`PyMem_Realloc`, :c:func:`PyMem_Calloc`, :c:"
|
|
"func:`PyMem_Free`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:335
|
|
msgid ""
|
|
":c:func:`PyObject_Malloc`, :c:func:`PyObject_Realloc`, :c:func:"
|
|
"`PyObject_Calloc`, :c:func:`PyObject_Free`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:338
|
|
msgid ""
|
|
"Newly allocated memory is filled with the byte ``0xCB``, freed memory is "
|
|
"filled with the byte ``0xDB``. Additional checks:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:341
|
|
msgid ""
|
|
"detect API violations, ex: :c:func:`PyObject_Free` called on a buffer "
|
|
"allocated by :c:func:`PyMem_Malloc`"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:343
|
|
msgid "detect write before the start of the buffer (buffer underflow)"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:344
|
|
msgid "detect write after the end of the buffer (buffer overflow)"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:346
|
|
msgid "The function does nothing if Python is not compiled is debug mode."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:350
|
|
msgid "Customize PyObject Arena Allocator"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:352
|
|
msgid ""
|
|
"Python has a *pymalloc* allocator for allocations smaller than 512 bytes. "
|
|
"This allocator is optimized for small objects with a short lifetime. It uses "
|
|
"memory mappings called \"arenas\" with a fixed size of 256 KB. It falls back "
|
|
"to :c:func:`PyMem_RawMalloc` and :c:func:`PyMem_RawRealloc` for allocations "
|
|
"larger than 512 bytes. *pymalloc* is the default allocator used by :c:func:"
|
|
"`PyObject_Malloc`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:359
|
|
msgid "The default arena allocator uses the following functions:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:361
|
|
msgid ":c:func:`VirtualAlloc` and :c:func:`VirtualFree` on Windows,"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:362
|
|
msgid ":c:func:`mmap` and :c:func:`munmap` if available,"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:363
|
|
msgid ":c:func:`malloc` and :c:func:`free` otherwise."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:369
|
|
msgid ""
|
|
"Structure used to describe an arena allocator. The structure has three "
|
|
"fields:"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:377
|
|
msgid "``void* alloc(void *ctx, size_t size)``"
|
|
msgstr "``void* alloc(void *ctx, size_t size)``"
|
|
|
|
#: ../Doc/c-api/memory.rst:377
|
|
msgid "allocate an arena of size bytes"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:379
|
|
msgid "``void free(void *ctx, size_t size, void *ptr)``"
|
|
msgstr "``void free(void *ctx, size_t size, void *ptr)``"
|
|
|
|
#: ../Doc/c-api/memory.rst:379
|
|
msgid "free an arena"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:384
|
|
msgid "Get the arena allocator."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:388
|
|
msgid "Set the arena allocator."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:394
|
|
msgid "Examples"
|
|
msgstr "Exemples"
|
|
|
|
#: ../Doc/c-api/memory.rst:396
|
|
msgid ""
|
|
"Here is the example from section :ref:`memoryoverview`, rewritten so that "
|
|
"the I/O buffer is allocated from the Python heap by using the first function "
|
|
"set::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:409
|
|
msgid "The same code using the type-oriented function set::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:421
|
|
msgid ""
|
|
"Note that in the two examples above, the buffer is always manipulated via "
|
|
"functions belonging to the same set. Indeed, it is required to use the same "
|
|
"memory API family for a given memory block, so that the risk of mixing "
|
|
"different allocators is reduced to a minimum. The following code sequence "
|
|
"contains two errors, one of which is labeled as *fatal* because it mixes two "
|
|
"different allocators operating on different heaps. ::"
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:436
|
|
msgid ""
|
|
"In addition to the functions aimed at handling raw memory blocks from the "
|
|
"Python heap, objects in Python are allocated and released with :c:func:"
|
|
"`PyObject_New`, :c:func:`PyObject_NewVar` and :c:func:`PyObject_Del`."
|
|
msgstr ""
|
|
|
|
#: ../Doc/c-api/memory.rst:440
|
|
msgid ""
|
|
"These will be explained in the next chapter on defining and implementing new "
|
|
"object types in C."
|
|
msgstr ""
|