24 void delete_self_with_data()
override
33 return MEM_new<MEMFreeImplicitSharing>(__func__, data);
49 if ((*sharing_info)->is_mutable()) {
50 (*sharing_info)->tag_ensured_mutable();
54 memcpy(new_data, old_data, size);
55 (*sharing_info)->remove_user_and_delete_if_last();
71 (*sharing_info)->remove_user_and_delete_if_last();
72 *sharing_info =
nullptr;
86 if ((*sharing_info)->is_mutable()) {
92 void *new_data =
static_cast<int *
>(
MEM_reallocN(old_data, new_size));
93 info->data = new_data;
94 (*sharing_info)->tag_ensured_mutable();
100 memcpy(new_data, old_data, std::min(old_size, new_size));
101 (*sharing_info)->remove_user_and_delete_if_last();
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
MEMFreeImplicitSharing(void *data)
void * MEM_mallocN_aligned(size_t len, size_t alignment, const char *str)
void MEM_freeN(void *vmemh)
void * resize_trivial_array_impl(void *old_data, int64_t old_size, int64_t new_size, int64_t alignment, const ImplicitSharingInfo **sharing_info)
void * make_trivial_data_mutable_impl(void *old_data, int64_t size, int64_t alignment, const ImplicitSharingInfo **sharing_info)
const ImplicitSharingInfo * info_for_mem_free(void *data)