Using malloc instead of new, and calling the copy constructor when the object is created

后端 未结 3 1360
眼角桃花
眼角桃花 2021-01-13 18:56

I wanted to try out TBB\'s scalable_allocator, but was confused when I had to replace some of my code. This is how allocation is done with the allocator:

Som         


        
3条回答
  •  生来不讨喜
    2021-01-13 19:52

    The parameter to allocate() is the number of objects, not the size in bytes. You then call the allocator's construct() function to construct the object.

    scalable_allocator sa;
    SomeClass* s = sa.allocate(1);
    sa.construct(s, SomeClass());
    // ...
    sa.destroy(s);
    sa.deallocate(s);
    

    If want to use it with a standard library container or other std allocator aware type, simply give it the allocator type.

    std::vector> v;
    

提交回复
热议问题