28 void delete_self_with_data()
override
37 return MEM_new<MEMFreeImplicitSharing>(__func__,
data);
53 if ((*sharing_info)->is_mutable()) {
54 (*sharing_info)->tag_ensured_mutable();
58 memcpy(new_data, old_data,
size);
59 (*sharing_info)->remove_user_and_delete_if_last();
75 (*sharing_info)->remove_user_and_delete_if_last();
76 *sharing_info =
nullptr;
90 if ((*sharing_info)->is_mutable()) {
96 void *new_data =
static_cast<int *
>(
MEM_reallocN(old_data, new_size));
97 info->data = new_data;
98 (*sharing_info)->tag_ensured_mutable();
104 memcpy(new_data, old_data, std::min(old_size, new_size));
105 (*sharing_info)->remove_user_and_delete_if_last();
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
BMesh const char void * data
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
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)