如何拆分一个分配区域,使两个区域可以分别重新分配?

How to split an allocation region so that the two regions can be reallocated separately?

我想在特定点将分配的内存区域一分为二,以便这两个区域可以 realloc 分开。我想这样做是因为我想在区域中间释放space。

我的想法是做这样的事情:

┌───────────────────────────────┐
│ Allocated                     │
└───────────────────────────────┘
              ↓
          split( );
              ↓
┌───────────────┬───────────────┐
│ Allocated     │ Allocated     │
└───────────────┴───────────────┘
              ↓
         realloc( );
              ↓
┌───────────┐   ┌───────────────┐
│ Allocated │   │ Allocated     │
└───────────┘   └───────────────┘

这在 Rust 中可行吗?如果可以,怎么做?

这是(目前)不可能的。

Rust 的内存分配 API 在 the alloc module 中。如您所见,那里没有提供您需要的功能。

理论上,分配器可以提供这样的功能。然而,在实践中,这通常不被提供或使用。据我所知,C 中的标准分配 API 也不提供此功能。