struct reserved_memory
    {
     void *safety;
     size_t safety_size;
     reserved_memory(size_t size) : safety_size(size)
     {
       init();
     }

     bool use() {
        if (safety) {
            ::operator(safety);
            safety=0;
            return true;
        } else
            return false;
     }
    private:
     void init()
     {
        safety=::operator new(safety_size);
     }
   }

我有未编译的代码-我也从未见过此代码。这是在调用构造函数吗?结构中没有重载()运算符...

最佳答案

似乎很明显,无论是谁编写了旨在调用::operator delete(safety)的代码,

(证据:safety是一个指针;它是使用::operator new(safety_size)初始化的,在他们错误地调用::operator(safety)之后,将其重置为零)。

至于整个代码的目的,我不知道-看起来它可能是相当糟糕的设计的一部分。

肯·布鲁姆(Ken Bloom)为该代码的目的提供了一个合理的答案:保留一些在紧急情况下要释放的紧急记忆(以留出足够的呼吸空间以发出错误消息)。有关更多详细信息,请参见his answer

关于c++ -::operator()是做什么的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4687166/

10-11 06:43