Ruby  3.4.0dev (2024-11-22 revision 37a72b0150ec36b4ea27175039afc28c62207b0c)
xmalloc.h
Go to the documentation of this file.
1 #ifndef RBIMPL_XMALLOC_H /*-*-C++-*-vi:se ft=cpp:*/
2 #define RBIMPL_XMALLOC_H
23 #include "ruby/internal/config.h"
24 
25 #ifdef STDC_HEADERS
26 # include <stddef.h>
27 #endif
28 
29 #ifdef HAVE_STDLIB_H
30 # include <stdlib.h>
31 #endif
32 
39 
49 #ifndef USE_GC_MALLOC_OBJ_INFO_DETAILS
50 # define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
51 #endif
52 
53 #define xmalloc ruby_xmalloc
54 #define xmalloc2 ruby_xmalloc2
55 #define xcalloc ruby_xcalloc
56 #define xrealloc ruby_xrealloc
57 #define xrealloc2 ruby_xrealloc2
58 #define xfree ruby_xfree
61 
86 void *ruby_xmalloc(size_t size)
87 RBIMPL_ATTR_NOEXCEPT(malloc(size))
88 ;
89 
117 void *ruby_xmalloc2(size_t nelems, size_t elemsiz)
118 RBIMPL_ATTR_NOEXCEPT(malloc(nelems * elemsiz))
119 ;
120 
147 void *ruby_xcalloc(size_t nelems, size_t elemsiz)
148 RBIMPL_ATTR_NOEXCEPT(calloc(nelems, elemsiz))
149 ;
150 
193 void *ruby_xrealloc(void *ptr, size_t newsiz)
194 RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newsiz))
195 ;
196 
250 void *ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz)
251 RBIMPL_ATTR_NOEXCEPT(realloc(ptr, newelems * newsiz))
252 ;
253 
282 void ruby_xfree(void *ptr)
284 ;
285 
287 
288 #endif /* RBIMPL_XMALLOC_H */
Defines RBIMPL_ATTR_ALLOC_SIZE.
#define RBIMPL_ATTR_ALLOC_SIZE(tuple)
Wraps (or simulates) __attribute__((alloc_size))
Definition: alloc_size.h:27
Tweaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
Definition: dllexport.h:74
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
Definition: dllexport.h:65
char * ptr
Pointer to the underlying memory region, of at least capa bytes.
Definition: io.h:2
Defines RBIMPL_ATTR_NODISCARD.
#define RBIMPL_ATTR_NODISCARD()
Wraps (or simulates) [[nodiscard]].
Definition: nodiscard.h:37
Defines RBIMPL_ATTR_NOEXCEPT.
#define RBIMPL_ATTR_NOEXCEPT(_)
Wraps (or simulates) C++11 noexcept
Definition: noexcept.h:73
Defines RBIMPL_ATTR_RESTRICT.
#define RBIMPL_ATTR_RESTRICT()
Wraps (or simulates) __declspec(restrict)
Definition: restrict.h:35
Defines RBIMPL_ATTR_RETURNS_NONNULL.
#define RBIMPL_ATTR_RETURNS_NONNULL()
Wraps (or simulates) __attribute__((returns_nonnull))
void * ruby_xmalloc2(size_t nelems, size_t elemsiz)
Identical to ruby_xmalloc(), except it allocates nelems * elemsiz bytes.
Definition: gc.c:4233
void * ruby_xmalloc(size_t size)
Allocates a storage instance.
Definition: gc.c:4215
void ruby_xfree(void *ptr)
Deallocates a storage instance.
Definition: gc.c:4299
void * ruby_xcalloc(size_t nelems, size_t elemsiz)
Identical to ruby_xmalloc2(), except it returns a zero-filled storage instance.
Definition: gc.c:4239
void * ruby_xrealloc(void *ptr, size_t newsiz)
Resize the storage instance.
Definition: gc.c:4258
void * ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz)
Identical to ruby_xrealloc(), except it resizes the given storage instance to newelems * newsiz bytes...
Definition: gc.c:4274