繁体   English   中英

管理使用新char *创建但使用自定义分配器分配给std :: vector元素的内存块

[英]Managing memory block created with new char* but allocated to std::vector elements with custom allocator

我一直在从事一个以连续方式存储向量的项目。 我当前的设置为std::vector有一个custom allocator ,其中包含对memory management object的引用。

  • memory management object包含一个指向当前缓冲区的char*和一个std::vector ,一旦该缓冲区已满,我就将char *推送给该缓冲区。
  • 每个char*缓冲区都是由memory management object通过new调用创建的。
  • 使用自定义分配器的std::vectors包装在SmallVector类中。
  • SmallVectors是通过调用其类构造函数创建的,该类构造函数不包含任何newmalloc语句。

deletechar*'s我与创建new的的析构函数memory management object由通过含有该载体的循环char *sdelete-ing每一个。 其他一切会照顾好自己吗? 即使可以,这是否合适,或者在这种情况下我可以采取更严格的内存管理步骤?

每个char *缓冲区都是由内存管理对象通过新调用创建的。

那可能应该是调用operator newref )以获取未初始化的内存(除非您知道那是您想要的)。

其他一切会照顾好自己吗?

从您发布的内容来看,是的。 只要确保您的分配器是CopyConstructable即可(基本上是allocator a; allocator b(a);有效)。

即使可以,这是否合适,或者在这种情况下我可以采取更严格的内存管理步骤?

如果您坚持使用new ,则可以使用std::unque_ptr进行自动释放,或者如果您使用operator new则可以将std::unique_ptr与自定义删除器一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM