Я столкнулся с тем, что я рассматриваю странность в своем коде на C++, и мне любопытно узнать причину. Я перегрузил новую для класса Object и напечатал возвращаемое значение на консоли. Я также печатаю значение этого в конструкторе для Object. Эти значения не совпадают (они отличаются одним словом). Ожидается ли это?Значение, возвращаемое с перегрузки нового, и это не соответствует
void* Object::operator new(size_t size)
{
void* startAddress = ...
std::cout << "object starts at absolute address " << (int)startAddress << "\n";
return startAddress;
}
Object(TypeId type)
{
_type = type;
std::cout << "this is address " << (int)this << "\n";
}
Выход:
object starts at absolute address 5164888
this is address 5164896
vtable, вероятно, – BitTickler
Можете ли вы показать минимальный пример, который компилирует, включая определение 'Object' и код, который вызывает' new'? – Brian
Как вы назначаете 'startAddress'? – Barmar