Download include/python3.9/internal/pycore_pymem.h from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 3.36 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/include/python3.9/internal/pycore_pymem.h
- Command line
-
hf download hf://camenduru/slahmr-test/include/python3.9/internal/pycore_pymem.h
-
curl -L -o pycore_pymem.h https://huggingface.co/camenduru/slahmr-test/resolve/main/include/python3.9/internal/pycore_pymem.h
3.36 kB
| extern "C" { | |
| /* Set the memory allocator of the specified domain to the default. | |
| Save the old allocator into *old_alloc if it's non-NULL. | |
| Return on success, or return -1 if the domain is unknown. */ | |
| PyAPI_FUNC(int) _PyMem_SetDefaultAllocator( | |
| PyMemAllocatorDomain domain, | |
| PyMemAllocatorEx *old_alloc); | |
| /* Special bytes broadcast into debug memory blocks at appropriate times. | |
| Strings of these are unlikely to be valid addresses, floats, ints or | |
| 7-bit ASCII. | |
| - PYMEM_CLEANBYTE: clean (newly allocated) memory | |
| - PYMEM_DEADBYTE dead (newly freed) memory | |
| - PYMEM_FORBIDDENBYTE: untouchable bytes at each end of a block | |
| Byte patterns 0xCB, 0xDB and 0xFB have been replaced with 0xCD, 0xDD and | |
| 0xFD to use the same values than Windows CRT debug malloc() and free(). | |
| If modified, _PyMem_IsPtrFreed() should be updated as well. */ | |
| /* Heuristic checking if a pointer value is newly allocated | |
| (uninitialized), newly freed or NULL (is equal to zero). | |
| The pointer is not dereferenced, only the pointer value is checked. | |
| The heuristic relies on the debug hooks on Python memory allocators which | |
| fills newly allocated memory with CLEANBYTE (0xCD) and newly freed memory | |
| with DEADBYTE (0xDD). Detect also "untouchable bytes" marked | |
| with FORBIDDENBYTE (0xFD). */ | |
| static inline int _PyMem_IsPtrFreed(const void *ptr) | |
| { | |
| uintptr_t value = (uintptr_t)ptr; | |
| return (value == 0 | |
| || value == (uintptr_t)0xCDCDCDCDCDCDCDCD | |
| || value == (uintptr_t)0xDDDDDDDDDDDDDDDD | |
| || value == (uintptr_t)0xFDFDFDFDFDFDFDFD); | |
| return (value == 0 | |
| || value == (uintptr_t)0xCDCDCDCD | |
| || value == (uintptr_t)0xDDDDDDDD | |
| || value == (uintptr_t)0xFDFDFDFD); | |
| } | |
| PyAPI_FUNC(int) _PyMem_GetAllocatorName( | |
| const char *name, | |
| PyMemAllocatorName *allocator); | |
| /* Configure the Python memory allocators. | |
| Pass PYMEM_ALLOCATOR_DEFAULT to use default allocators. | |
| PYMEM_ALLOCATOR_NOT_SET does nothing. */ | |
| PyAPI_FUNC(int) _PyMem_SetupAllocators(PyMemAllocatorName allocator); | |
| /* bpo-35053: Expose _Py_tracemalloc_config for _Py_NewReference() | |
| which access directly _Py_tracemalloc_config.tracing for best | |
| performances. */ | |
| struct _PyTraceMalloc_Config { | |
| /* Module initialized? | |
| Variable protected by the GIL */ | |
| enum { | |
| TRACEMALLOC_NOT_INITIALIZED, | |
| TRACEMALLOC_INITIALIZED, | |
| TRACEMALLOC_FINALIZED | |
| } initialized; | |
| /* Is tracemalloc tracing memory allocations? | |
| Variable protected by the GIL */ | |
| int tracing; | |
| /* limit of the number of frames in a traceback, 1 by default. | |
| Variable protected by the GIL. */ | |
| int max_nframe; | |
| }; | |
| PyAPI_DATA(struct _PyTraceMalloc_Config) _Py_tracemalloc_config; | |
| } | |