Читать книгу Ссылки и указатели в 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 если нужно.