https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113258
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Nicholas Miell from comment #8) > What appears to actually be happening is that the libstdc++ operator > new(std::size_t size, std::align_val_t alignment) is calling glibc's > aligned_alloc, and then the libstdc++ operator delete(void* ptr, > std::align_val_t alignment) is calling std::free(), which is supplied by > tcmalloc. aligned_alloc is part of C11 and C++17 and is required to be free'd by std::free (or free in the C11 case). So this seems like a bug in tcmalloc not supplying an override of the C11 function aligned_alloc. You would run into the same issue with a C11 application that does the same too.