Ссылки и указатели в C++: от основ к безопасности и современному коду

Ссылки и указатели в C++: от основ к безопасности и современному коду
Автор книги: id книги: 3591811 Правообладателям     Оценка: 0.0     Голосов: 0     Отзывы, комментарии: 0 990 руб.     (12,66$) Читать книгу Купить и скачать книгу Электронная книга Жанр: Правообладатель и/или издательство: Автор Дата публикации, год издания: 2025 Дата добавления в каталог КнигаЛит: Скачать фрагмент в формате   fb2   fb2.zip Возрастное ограничение: 0+ Оглавление Отрывок из книги

Реклама. ООО «ЛитРес», ИНН: 7719571260.

Описание книги

В книге рассматриваются ссылки и указатели в языке программирования C++, а также предлагаются задачи для самостоятельной работы, акцент на безопасность и написание современного кода.

Оглавление

Группа авторов. Ссылки и указатели в C++: от основ к безопасности и современному коду

Глава 1

Где что живёт стек, куча, статика и другие сегменты памяти

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ДОПОЛНЕНИЕ

ВОДА

Игнорирование сегментов памяти и ручное управление без осторожности

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Осознанное размещение, RAII и современные инструменты

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Статическая память вечные жители программы

НА ЗАМЕТКУ

ПРИМЕЧАНИ

ВАЖНО

ДОПОЛНЕНИЕ

ВОДА

Злоупотребление статикой и глобальными

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Минимизация статики, const и alternatives

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Константная память неизменяемые сокровища

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ДОПОЛНЕНИЕ

ВОДА

Попытки модификации констант и игнор RO

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Использование

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Виртуальная память контекст для реального мира

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ДОПОЛНЕНИЕ

ВОДА

Зависимость от виртуальной памяти без лимитов и понимания

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Мониторинг, лимиты и осознанное использование

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Жизненный цикл переменных от рождения до смерти

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

Продление жизни неправильно

Правильные scopes и RAII

Выравнивание и alignof, sizeof vs реальный размер

ДОПОЛНЕНИЕ

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ВОДА

Игнорирование выравнивания, padding и alignof

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ВОДА

Оптимизация с alignof, alignas и умным дизайном

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ДОПОЛНЕНИЕ

sizeof vs реальный размер почему компилятор "обманывает" нас байтами

ДОПОЛНЕНИЕ

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ВОДА

Предположение, что sizeof = сумма полей, и игнорирование "реального" размера

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ВОДА

Проверка sizeof, оптимизация и расчёт "реального" размера

НА ЗАМЕТКУ

ПРИМЕЧАНИЕ

ВАЖНО

ДОПОЛНЕНИЕ

Упражнения: &, sizeof, alignof

Задача 1: Адрес переменной на стеке

Задача 2: Размер простого типа

Задача 3: Выравнивание базового типа

Задача 4: Адрес элемента массива

Задача 5: Размер структуры с padding

Задача 6: Выравнивание структуры

Задача 7: Адрес глобальной переменной

Задача 8: Размер массива vs указателя

Задача 9: Выравнивание с alignas

Задача 10: Адрес в функции

Задача 11: Размер класса с виртуальными функциями

Задача 12: Выравнивание массива

Задача 13: Адрес на куче

Задача 14: Размер union

Задача 15: Выравнивание bit-field

Задача 16: Сравнение адресов

Задача 17: Размер с packed

Задача 18: Выравнивание over-aligned

Задача 19: Адрес строки

Задача 20: Комбинированная: sizeof, alignof, &

Резюме

Ответы на задачи

Ответы Глава 1. Память: стек, куча, статика

Ответ на задачу 1 (Адрес переменной на стеке)

Ответ на задачу 2 (Размер простого типа)

Ответ на задачу 3 (Выравнивание базового типа)

Ответ на задачу 4 (Адрес элемента массива)

Ответ на задачу 5 (Размер структуры с padding)

Ответ на задачу 6 (Выравнивание структуры)

Ответ на задачу 7 (Адрес глобальной переменной)

Ответ на задачу 8 (Размер массива vs указателя)

Ответ на задачу 9 (Выравнивание с alignas)

Ответ на задачу 10 (Адрес в функции)

Ответ на задачу 11 (Размер класса с виртуальными функциями)

Ответ на задачу 12 (Выравнивание массива)

Ответ на задачу 13 (Адрес на куче)

Ответ на задачу 14 (Размер union)

Ответ на задачу 15 (Выравнивание bit-field)

Ответ на задачу 16 (Сравнение адресов)

Ответ на задачу 17 (Размер с packed)

Ответ на задачу 18 (Выравнивание over-aligned)

Ответ на задачу 19 (Адрес строки)

Ответ на задачу 20 (Комбинированная: sizeof, alignof, &)

Отрывок из книги

В C++ память делится на несколько сегментов, каждый из которых предназначен для хранения данных с разными сроками жизни, правилами доступа и механизмами управления. Это как комнаты в огромном доме: кухня для быстрых дел (стек), подвал для долгосрочного хранения (куча), фундамент для постоянных элементов (статика), библиотека для неизменных книг (константная память) и чертежи дома (сегмент кода). Понимание этих сегментов ключ к избежанию ошибок, как крахи или утечки.

Стек (Stack): это область для локальных переменных функций, параметров и информации о вызовах (стек вызовов). Работает по принципу LIFO (Last In, First Out) как стопка тарелок: последняя положенная снимается первой. Размер стека фиксирован и ограничен (обычно 1–8 МБ на поток), выделяется автоматически при входе в функцию и освобождается при выходе. Это делает стек сверхбыстрым, но не подходящим для больших или динамических данных рискуете переполнением (stack overflow). Локальные переменные "живут" только внутри функции.

.....

int main() {

auto ptr = heapExample(); // Безопасно, ptr владеет памятью

.....

Добавление нового отзыва

Комментарий Поле, отмеченное звёздочкой  — обязательно к заполнению

Отзывы и комментарии читателей

Нет рецензий. Будьте первым, кто напишет рецензию на книгу Ссылки и указатели в C++: от основ к безопасности и современному коду
Подняться наверх