У меня проблема с компиляцией конструкторов, когда я компилирую программу на VC6, мои конструкторы имеют выделение памяти (sub esp, X), но когда я компилирую на VC9, мой конструктор не имеет этого.
Кто знает, где проблема?
Я думаю, что проблема в настройках проекта, но где я не знаю.
VC6 (Visual Studio 6 + SP3):
VC9 (Visual Studio 2008 + SP1):
Учебный класс:
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 в режиме отладки, но, видимо, с другими вариантами.
Разборка выше выглядит совершенно неоптимизированной. Видимое дополнительное выделение стека, вероятно, просто случайный код, сгенерированный VC6 в неоптимизированной сборке.
Я бы посоветовал собрать его как выпуск и еще раз осмотреть разборку. Вы можете установить точку останова встроенной сборки, чтобы ее было легче найти в отладчике:
MyClass::MyClass()
{
__asm { int 3 }
this->Member2 = 0;
}
Других решений пока нет …