在c里,realloc有两种情况:

  1. chunk下部有足够的free空间,可以直接原地扩增
  2. 没有足够空间,alloc一块新内存,把旧的内容memcpy过去

这些操作都是libc作为堆管理器执行的功能

在c++里,由于并不是所有的类都是可平凡复制的,realloc的第二种情况就会导致错误

由于c++的内存分配均使用allocator,它自身并不管理堆内存,底层仍然使用的是libc的堆管理器,所以实际上realloc的逻辑是无法修改的,但对于chunk的原地增长,只有realloc可以实现,所以按照目前c++的设计架构,是无法实现realloc功能的

(同时还存在类似于WinHeap的操作系统的堆管理器,c++也不应该自己去实现堆管理)