[英]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
是通过调用其类构造函数创建的,该类构造函数不包含任何new
或malloc
语句。 我delete
的char*'s
我与创建new
的的析构函数memory management object
由通过含有该载体的循环char *s
和delete-ing
每一个。 其他一切会照顾好自己吗? 即使可以,这是否合适,或者在这种情况下我可以采取更严格的内存管理步骤?
每个char *缓冲区都是由内存管理对象通过新调用创建的。
那可能应该是调用operator new
( ref )以获取未初始化的内存(除非您知道那是您想要的)。
其他一切会照顾好自己吗?
从您发布的内容来看,是的。 只要确保您的分配器是CopyConstructable即可(基本上是allocator a; allocator b(a);
有效)。
即使可以,这是否合适,或者在这种情况下我可以采取更严格的内存管理步骤?
如果您坚持使用new
,则可以使用std::unque_ptr
进行自动释放,或者如果您使用operator new
则可以将std::unique_ptr
与自定义删除器一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.