相关疑难解决方法(0)

哪个运营商删除?

是否有区别:

operator delete(some_pointer);
Run Code Online (Sandbox Code Playgroud)

delete some_pointer;
Run Code Online (Sandbox Code Playgroud)

如果是这样,有什么区别,哪一个应该使用一个以及该运营商的另一个版本?谢谢.

c++ operators

14
推荐指数
2
解决办法
1410
查看次数

使用boost singleton_pool的自定义分配比默认值慢

我为MyOrder类编写了自定义运算符new和operator delete.我使用boost :: singleton pool分配内存.这是测试性能的程序,

#include <boost/pool/singleton_pool.hpp>
#include <boost/progress.hpp>
#include <iostream>
#include <new>
#include <vector>


class MyOrder{
    std::vector<int> v1_;
    std::vector<double> v2_;

    std::string s1_;
    std::string s2_;

public:
    MyOrder(std::string s1, std::string s2): s1_(s1), s2_(s2) {}

    ~MyOrder(){}

    static void * operator new(size_t size); 
    static void operator delete(void * rawMemory) throw();
};

struct MyOrderTag{};
typedef boost::singleton_pool<MyOrderTag, sizeof(MyOrder)> MyOrderPool; 

void* MyOrder:: operator new(size_t size)
{
    if (size != sizeof(MyOrder)) 
        return ::operator new(size);

    while(true){
        void * ptr = MyOrderPool::malloc();
        if (ptr != NULL) return ptr;

        std::new_handler …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management memory-pool boost-pool

5
推荐指数
1
解决办法
2007
查看次数