Вот что я выполняю
Код: Выделить всё
MyClass* foo = new MyClass();
int size = sizeof(*foo)
Я посмотрите на дизассемблирование и увидите, что значения sizeof() на самом деле являются частью машинного кода. Будет ли это ошибкой компилятора или компоновщика? Почему две части одного и того же проекта по-разному рассматривают один и тот же класс?
РЕДАКТИРОВАТЬ:
Позвольте мне предоставить более наглядный пример, который я просто привел, чтобы показать, что это НЕ является нарушением ODR.
Я только что создал совершенно новый класс как таковой
Код: Выделить всё
class TestAlignClass
{
public:
TestAlignClass() { }
~TestAlignClass() { }
private:
char charArray[3];
int myInt;
};
Фактически, когда я вхожу в оператор new(), иногда он выделяет 7 байт, а иногда он выделяет 8.
Я связываю несколько проектов вместе и сначала подумал, что это связано с настройками проекта, но в разных частях одного и того же проекта будет проявляться несоответствие.
Подробнее здесь: https://stackoverflow.com/questions/173 ... -or-linker
Мобильная версия