Читать книгу Ссылки и указатели в C++: от основ к безопасности и современному коду - - Страница 12

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

Оглавление

Выбирайте сегмент по нуждам: локальное стек, динамическое куча с умными указателями, постоянное статика. Введите RAII (Resource Acquisition Is Initialization): ресурсы (память) приобретаются в конструкторе, освобождаются в деструкторе. Это основа современных C++: std::unique_ptr для уникального владения (авто-delete), std::shared_ptr для совместного (ref-counting).

Пример:

#include <iostream>

#include <memory>

#include <vector>

int globalVar = 42; // Статика

void stackExample() {

int x = 5; // Стек

std::cout << "Адрес на стеке: " << &x << std::endl;

}

std::unique_ptr<int> heapExample() {

return std::make_unique<int>(10); // Куча, RAII: авто-освобождение

}

int main() {

stackExample();

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

std::vector<int> dynamicArray(1000000); // Куча внутри vector

std::cout << "Глобальный адрес: " << &globalVar << std::endl;

return 0;

}

Для глобальных: минимизируйте, используйте singleton если нужно.

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

Подняться наверх