Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Почему глобальный объект, объявленный до main, конструируется в ней? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите разобраться с задачей, решение должно быть в структуре http://www.cyberforum.ru/cpp-beginners/thread351088.html
Помогите разобраться с задачей, решение должно быть в структуре задача.По данным сведениям об учениках класса определить среднюю массу мальчиков .Кто из них самый тяжелый
C++ Даны действительные числа x,y. Определить, принадлежит ли точка с координатами x,y заштрихованной части плоскости Даны действительные числа x,y. Определить, принадлежит ли точка с координатами x,y заштрихованной части плоскости. Прошу помочь с выведением формулы для определения, принадлежит ли точка... http://www.cyberforum.ru/cpp-beginners/thread351087.html
C++ class Point
#include<iostream> #include<math.h> #include<stdlib.h> using namespace std; class Point { Point(float,float); ~Point(){}
C++ создание фигур
создать фигуры треугольник, квадрат и прямоугольник, используя класс точка, фигуры вывести на экран mfc, помогите пожалуйсто с классом фигура что и как пишется #include "iostream" #include...
C++ Структуры: Организовать базу данных для спортивного клуба http://www.cyberforum.ru/cpp-beginners/thread351057.html
Организовать базу данных для спортивного клуба со следующей информацией про штангистов: – ФИО; – дата рождения (дд:мм:рррр); – вес. Вывести на экран список спортсменов, отсортированный по весовым...
C++ Сортировка файлов Здравствуйте уважаемые форумчане)) С праздником Вас... Вот кто нибудь подскажет как сортируются файлы? методы Трех ленточную мне двли и БМ(Боура моура) Вот у кого может пример есть? на СИ\С++\С#... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,471

Почему глобальный объект, объявленный до main, конструируется в ней? - C++

13.09.2011, 17:16. Просмотров 2188. Ответов 36
Метки (Все метки)

Всё просто, имеем код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <windows.h>
#include <stdio.h>
using namespace std;
 
class x {
 public:
 x () { 
  printf ("konstruktor\n");     
 }
};
x x_;
 
int main() {
 printf ("%x\n", main);
 getchar();
 return 0;
}
запускаем, видим:
C++
1
2
konstruktor
401290
последнее значение адрес main, у каждого своё.
Так, открываем прогу в отладчике OllyDbg, стоим на точке входа (у всех своя, у меня) 401220, ставим бряк на 401290, на main, запускаем. Видим, что бряк сработал, но конструктор не вызвался! Чуть пониже в окне дизассембра видим вызов printf с аргументом "konstruktor", то есть объект конструируется в main. Как такое может быть? Компилятор g++. Спасибо, кто откликнется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru