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

Не могу заставить g++ не инициализировать локальную переменную нулем - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ AllocHook http://www.cyberforum.ru/cpp/thread1615167.html
Помнится в какой-то теме были задачи одного из собеседований озвучены. Из-за давности той темы отдельно создал новую. Заинтересовала меня тогда одна задача. Определить сколько памяти израсходовал map...
C++ Запуск проекта в clion Всем привет! У меня такая проблема: не могу запустить проект в clio, когда я запускаю проект вылетает окно edit configuration, а я вообще незнаю что туда писать( Помогите пожалуйста! Заранее... http://www.cyberforum.ru/cpp/thread1613419.html
Как запустить стороннюю программу с атрибутами? C++
Ребята спасайте, вот получается есть такой код в батнике: plink.exe -ssh 209.249.30.190 -C -N -l adm -pw adm -D 8081 -v Как я понимаю, мы открываем файл plink.exe с нужными нам атрибутами. Как...
C++ Обмен данными через параллельный порт
Нужен код программы, которая будет обмениваться данными с устройством, подключенное через параллельный порт Добавлено через 14 часов 41 минуту В частности обмен данными с флешкой или принтером
C++ Изменение заголовка окна программы в консоли http://www.cyberforum.ru/cpp/thread1611260.html
Здравствуйте. Нужна помощь. Как сделать так, чтобы окно программы в консоли было подписано названием моей программы, а не путём к ней. Можно, конечно, сделать так: #include <iostream> #include...
C++ Узнать пароль Windows 7 с помощью хука Подскажите по-конкретней можно ли узнать пароль windows 7 с помощью хука. И как вообще это всё реализуется? Обсуждение взлома на форуме запрещено подробнее

Показать сообщение отдельно
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1

Не могу заставить g++ не инициализировать локальную переменную нулем - C++

17.12.2015, 06:59. Просмотров 674. Ответов 20
Метки (Все метки)

Привет!
Есть такой код (из серии "что будет напечатано на экран")
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int x = 1;
 
namespace A
{
int x = 2;
}
 
int main() 
{
    int x = x;
    cout << x << endl;
    return 0;
}
Ожидается мусор, но g++ и clang++ упорно выводят 0, мусор выводит только MSVC. Посмотрел ассемблерный выхлоп, g++ просто берет 4 байта со стека и печатает их (почему-то на стеке оказывается 0), clang++ явно пишет 0 на стек (т.е. явно инициализирует).
В g++ собирают так
Bash
1
g++ -Wall -pedantic-errors -std=c++11 -O2 -fno-init-local-zero tmp.cpp
варнинги просто чтоб посмотреть на уровень предупреждений, а стандарт указал, чтоб он gnu'шные фичи не использвоал (мало ли), оптимизация понятно для чего (чтоб не дебаг)). -fno-init-local-zero по сути используется по дефолту.

Как получить заветный мусор на выходе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru