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

后端 未结 3 1361
眼角桃花
眼角桃花 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:55

    You'll need to use placement new after getting the raw memory from malloc.

    void* mem = malloc(sizeof(S));
    S* s = new (mem) S(); //this is the so called "placement new"
    

    When you're done with the object you have to make sure to explicitly call its destructor.

    s->~S();
    free(mem);
    

提交回复
热议问题