Size: a a a

2ch /pr/ #staythefuckhome

2020 March 30

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
Коля🤔🎭
Ну, писать нужно будет что-то
На них бы и писал🤔
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
На плюсах легче и эффективнее
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
Коля🤔🎭
void f1()
{
  int a=1, b=2, c=3;
}

void f2()
{
  int a, b, c;
  printf ("%d, %d, %d\n", a, b, c);
}

int main()
{
   f1();
   f2();
};


Как думаити, что выведет f2?
a, b и c в функции f2() находятся по тем же адресам. Пока никто не перезаписал их, так что
они здесь в нетронутом виде. Для создания такой странной ситуации несколько функций должны
исполняться друг за другом и SP должен быть одинаковым при входе в функции, т.е. у функций
должно быть равное количество аргументов). Тогда локальные переменные будут расположены
в том же месте стека. Подводя итоги, все значения в стеке (да и памяти вообще) это значения
оставшиеся от исполнения предыдущих функций. Строго говоря, они не случайны, они скорее
непредсказуемы. А как иначе? Можно было бы очищать части стека перед исполнением каждой
функции, но это слишком много лишней (и ненужной) работы.
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
Коля🤔🎭
a, b и c в функции f2() находятся по тем же адресам. Пока никто не перезаписал их, так что
они здесь в нетронутом виде. Для создания такой странной ситуации несколько функций должны
исполняться друг за другом и SP должен быть одинаковым при входе в функции, т.е. у функций
должно быть равное количество аргументов). Тогда локальные переменные будут расположены
в том же месте стека. Подводя итоги, все значения в стеке (да и памяти вообще) это значения
оставшиеся от исполнения предыдущих функций. Строго говоря, они не случайны, они скорее
непредсказуемы. А как иначе? Можно было бы очищать части стека перед исполнением каждой
функции, но это слишком много лишней (и ненужной) работы.
Копипаста еее
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Копипаста еее
Хорошая копипаста
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
А еще параметры через регистры передаются так что это работает не только с функция с одинаковыми параметрами
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
Коля🤔🎭
Хорошая копипаста
Я такой пример уже постил
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
А еще параметры через регистры передаются так что это работает не только с функция с одинаковыми параметрами
ну, есть либо stack based, либо register based
источник

ГС

Господин Среда in 2ch /pr/ #staythefuckhome
Коля🤔🎭
a, b и c в функции f2() находятся по тем же адресам. Пока никто не перезаписал их, так что
они здесь в нетронутом виде. Для создания такой странной ситуации несколько функций должны
исполняться друг за другом и SP должен быть одинаковым при входе в функции, т.е. у функций
должно быть равное количество аргументов). Тогда локальные переменные будут расположены
в том же месте стека. Подводя итоги, все значения в стеке (да и памяти вообще) это значения
оставшиеся от исполнения предыдущих функций. Строго говоря, они не случайны, они скорее
непредсказуемы. А как иначе? Можно было бы очищать части стека перед исполнением каждой
функции, но это слишком много лишней (и ненужной) работы.
На выводе будет:
Я твоими значениями настолько преисполнился...(с)
источник

S

S̶o̶l̶y̶a̶r̶ in 2ch /pr/ #staythefuckhome
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
Language:
cpp_clang


Source:
#include <iostream>
void f1()
{
  int a=1, b=2, c=3;
}

void f2()
{
  int a, b, c;
  printf ("%d, %d, %d\n", a, b, c);
}

int main()
{
   f1();
   f2();
};


Warnings:
source_file.cpp:4:8: warning: unused variable 'a' [-Wunused-variable]
  int a=1, b=2, c=3;
      ^
source_file.cpp:4:13: warning: unused variable 'b' [-Wunused-variable]
  int a=1, b=2, c=3;
           ^
source_file.cpp:4:18: warning: unused variable 'c' [-Wunused-variable]
  int a=1, b=2, c=3;
                ^
source_file.cpp:10:28: warning: variable 'a' is uninitialized when used here [-Wuninitialized]
  printf ("%d, %d, %d\n", a, b, c);
                          ^
source_file.cpp:9:9: note: initialize the variable 'a' to silence this warning
  int a, b, c;
       ^
        = 0
source_file.cpp:10:31: warning: variable 'b' is uninitialized when used here [-Wuninitialized]
  printf ("%d, %d, %d\n", a, b, c);
                             ^
source_file.cpp:9:12: note: initialize the variable 'b' to silence this warning
  int a, b, c;
          ^
           = 0
source_file.cpp:10:34: warning: variable 'c' is uninitialized when used here [-Wuninitialized]
  printf ("%d, %d, %d\n", a, b, c);
                                ^
source_file.cpp:9:15: note: initialize the variable 'c' to silence this warning
  int a, b, c;
             ^
              = 0
6 warnings generated.


Result:
-1688387992, -1688387976, 32
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
Language:
cpp_clang


Source:
#include <iostream>
void f1()
{
  int a=1, b=2, c=3;
}

void f2()
{
  int a, b, c;
  printf ("%d, %d, %d\n", a, b, c);
}

int main()
{
   f1();
   f2();
};


Warnings:
source_file.cpp:4:8: warning: unused variable 'a' [-Wunused-variable]
  int a=1, b=2, c=3;
      ^
source_file.cpp:4:13: warning: unused variable 'b' [-Wunused-variable]
  int a=1, b=2, c=3;
           ^
source_file.cpp:4:18: warning: unused variable 'c' [-Wunused-variable]
  int a=1, b=2, c=3;
                ^
source_file.cpp:10:28: warning: variable 'a' is uninitialized when used here [-Wuninitialized]
  printf ("%d, %d, %d\n", a, b, c);
                          ^
source_file.cpp:9:9: note: initialize the variable 'a' to silence this warning
  int a, b, c;
       ^
        = 0
source_file.cpp:10:31: warning: variable 'b' is uninitialized when used here [-Wuninitialized]
  printf ("%d, %d, %d\n", a, b, c);
                             ^
source_file.cpp:9:12: note: initialize the variable 'b' to silence this warning
  int a, b, c;
          ^
           = 0
source_file.cpp:10:34: warning: variable 'c' is uninitialized when used here [-Wuninitialized]
  printf ("%d, %d, %d\n", a, b, c);
                                ^
source_file.cpp:9:15: note: initialize the variable 'c' to silence this warning
  int a, b, c;
             ^
              = 0
6 warnings generated.


Result:
-1688387992, -1688387976, 32
@glucklich1488 не робит чет
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
\0x
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
Коля🤔🎭
a, b и c в функции f2() находятся по тем же адресам. Пока никто не перезаписал их, так что
они здесь в нетронутом виде. Для создания такой странной ситуации несколько функций должны
исполняться друг за другом и SP должен быть одинаковым при входе в функции, т.е. у функций
должно быть равное количество аргументов). Тогда локальные переменные будут расположены
в том же месте стека. Подводя итоги, все значения в стеке (да и памяти вообще) это значения
оставшиеся от исполнения предыдущих функций. Строго говоря, они не случайны, они скорее
непредсказуемы. А как иначе? Можно было бы очищать части стека перед исполнением каждой
функции, но это слишком много лишней (и ненужной) работы.
рил забыл. Там же локальные переменные создаются
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
типа в стеке они создаются в том же порядке а потом указатель сдвигается вверх
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
следующая фунция в том же порядке создает переменные а там уже значения прошлых переменных
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
потому что стек не очищается а просто сдвигается
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
кстати, как работают локальные переменные в asm?
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
Коля🤔🎭
кстати, как работают локальные переменные в asm?
Какие локальные переменные 😂😂
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
Какие переменные 😂😂
источник