Wil*_*ill 1 c++ operator-keyword
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我有这个没有编译的代码 - 我以前也没见过这个.这是调用构造函数吗?结构中没有重载()运算符...
关于此代码似乎正在做什么的说明:
在旧的Mac上(在MacOS X之前,可能仍然在一些低内存的手持系统上),您曾经保留一些内存作为安全性,以便在内存不足时可以释放它,以便您可以使用它警告用户有什么不对劲并保存他们的所有工作.我在Jim Trudeau的Macintosh Starting Kit中看到了这种技术.
所以这看起来是同样的事情 - 按大小保留一块内存,并在需要时释放它.显然,程序员不想去的更常见的成语safety=new char[safety_size]和delete[] safety.