05.0 (Russian conspect)

Команда strace

По умолчанию выводит все системные вызовы, которые делала нашпа программа.

Если звпустить strace на компилятор мы увидим много страниц вызовов.

Указатели в языке C

Адрес в C, в отличии от других языков программирования, превращается в указатель.

Рассмотрим следующую программу:

1.jpg

Если перевести это в ассемблерный код, то получится следующее:

2.jpg

Разница между char* Srt = "The string" и char Carr[] = "Other string" следующая:

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

Локальные значения лежат на стеке, и их смещение относительно фрэйма является их уникальным идентификатором.

К Глобальным значениям мы просто по лэйблам ходим.

Если мы запустим код, показанный выше, то увидим, что все переменные из printf лежат в секции кода, кроме N, которая лежит на стеке:

43:42

Функция malloc в языке C выделаят указанное количество байтов в оперативной памяти. Восле выделения нужно освобождать память при помощи free()

HSE/ProgrammingOS/05_C_Addressing/Conspect (последним исправлял пользователь Lecture_Uploads 2020-06-08 23:21:21)