我正在尝试(并已解决)包含 SSE 优化成员的类的 16 字节对齐问题。但困扰我的是我在网上找到的大部分示例都包含一行代码,在我看来这些代码完全是多余的,但在许多地方却重复出现。
public:
void* operator new (size_t size)throw (std::bad_alloc)
{
void * p = _aligned_malloc(size, 16);
if (p == 0) throw std::bad_alloc();
return p;
}
void operator delete (void *p)
{
Camera* pC = static_cast<Camera*>(p);
_aligned_free(p);
}
有问题的行是
Camera* pC = static_cast<Camera*>(p);
由于 pC 从未被引用并且在函数末尾超出范围,那么这样做有什么意义呢?我试过把这条线拿出来,它似乎根本没有什么区别,但这条线出现在很多例子中!我是否遗漏了一些非常明显的东西,或者是否有异常的代码行被盲目地从一个示例复制到另一个示例,并在许多“教程”中变得普遍?