декомпиляция — компиляция конструкторов C ++

У меня проблема с компиляцией конструкторов, когда я компилирую программу на VC6, мои конструкторы имеют выделение памяти (sub esp, X), но когда я компилирую на VC9, мой конструктор не имеет этого.

Кто знает, где проблема?
Я думаю, что проблема в настройках проекта, но где я не знаю.

VC6 (Visual Studio 6 + SP3):

VC6 в сборе

VC9 (Visual Studio 2008 + SP1):

Сборка VC9

Учебный класс:

class MyClass
{
public:
MyClass();
virtual ~MyClass();
// ----
BOOL    Function1(LPSTR Arg1);
BOOL    Function2(LPSTR Arg1);
BOOL    Function3(LPSTR Arg1);
// ----
private:
char    Member1[1000][20];
int     Member2;
};

Код:

MyClass::MyClass()
{
this->Member2 = 0;
}

MyClass::~MyClass()
{

}

Код идентичен на VC6 и VC9

P.S .:
Проблема в разной компиляции для одного кода, когда нужно сделать одинаковый результат компиляции.

P.S. (2):
@Greatwolf — Я уверен, что проблема не в VC6, проблема в настройках проекта, но я не знаю, где это вариант.
Цель — 100% идентичный собранный код (от байта к байту).
Проект на VC6 и проект на VC9 в режиме отладки, но, видимо, с другими вариантами.

1

Решение

Разборка выше выглядит совершенно неоптимизированной. Видимое дополнительное выделение стека, вероятно, просто случайный код, сгенерированный VC6 в неоптимизированной сборке.

Я бы посоветовал собрать его как выпуск и еще раз осмотреть разборку. Вы можете установить точку останова встроенной сборки, чтобы ее было легче найти в отладчике:

MyClass::MyClass()
{
__asm { int 3 }
this->Member2 = 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector