Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+的类talloc池+;_C++_Pool_Memory Pool - Fatal编程技术网

C++ C+的类talloc池+;

C++ C+的类talloc池+;,c++,pool,memory-pool,C++,Pool,Memory Pool,是否有任何内存分配库提供类似talloc的池,并专门设计用于很好地使用C++的功能 特别是: 我可以提前预测一个游泳池需要有多大。不会有意外溢出的风险 如果我在一个池中分配一个对象,在整个池被释放之前,我将不需要回收它的存储。(因此,只需在池中按顺序分配对象,就不会产生比插入填充来解释不同类型的对齐更大的浪费。) 我需要能够在单个池中分配各种大小和对齐方式的对象 我需要将标准库容器的元素存储在池中。(在std::vectors的特殊情况下,我将在构建时设置内部缓冲区的容量,然后我将不尝试进一步增

是否有任何内存分配库提供类似talloc的池,并专门设计用于很好地使用C++的功能

特别是:

  • 我可以提前预测一个游泳池需要有多大。不会有意外溢出的风险

  • 如果我在一个池中分配一个对象,在整个池被释放之前,我将不需要回收它的存储。(因此,只需在池中按顺序分配对象,就不会产生比插入填充来解释不同类型的对齐更大的浪费。)

  • 我需要能够在单个池中分配各种大小和对齐方式的对象

  • 我需要将标准库容器的元素存储在池中。(在
    std::vector
    s的特殊情况下,我将在构建时设置内部缓冲区的容量,然后我将不尝试进一步增加向量。)

  • 我不想做的是:

  • 重新发明析构函数
  • 重新创造例外
  • 重新发明标准库容器
  • 使用
    void*

  • 我不太明白这一点——对我来说,TALLC似乎是一个系统,用来处理C.中C++ C++的析构函数,作为查询的其余部分,实现你自己的代码<新的< /C> >和<代码>删除< /C>运算符,以及<代码> STD::分配器< /C> >允许你使用所有的标准C++风格分配,对于最终用户来说,差别不大——主要部分是必须为标准容器应用分配器参数(如果您已经有大量代码,这当然会有点痛苦)。@MatsPetersson:talloc为那些需要在同一内存块中分配多个对象的情况提供池。在C++中我能看到的最接近的东西是放置新的,但是它破坏了RAII抽象。无论如何,我希望其他人已经这样做了,这样我就可以重用他们的解决方案了。:-)