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/