Я пытаюсь (и решил )проблему с выравниванием 16 байтов в классе, содержащем оптимизированные для SSE элементы. Но что меня беспокоит, так это то, что большая часть примеров, которые я нашел в Интернете, содержат строку кода, которая кажется мне совершенно избыточной, но повторяется во многих местах.
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 никогда не упоминается и выходит за рамки в конце функции, какой смысл это делать? Я попытался удалить строку, и, похоже, это не имеет никакого значения, но эта линия появляется во многих примерах! Я упустил что-то действительно очевидное или аномальная строка кода была скопирована из примера в пример вслепую и стала распространенной во многих «учебниках»?