TGViewer
C++ geek C++ geek @cpp_geek · 3.53K subscribers
Post #457 778
Невидимый UB: возвращаем ссылку на локальную переменную

Одна из самых коварных ошибок в C++ — возврат ссылки на переменную, срок жизни которой закончился. Казалось бы, всё компилируется, запускается... и даже иногда "работает". А под капотом — undefined behavior.

Пример:


const std::string& getName() {
std::string name = "John";
return name; // 💥 Возвращаем ссылку на локальный объект
}


Функция возвращает ссылку на name, но как только getName() завершится, name уничтожается. Ссылка указывает в никуда.

Использование этой ссылки:


std::cout << getName() << "\n"; // UB: может напечатать мусор, может упасть


👀 Хитрость: такая ошибка часто прячется внутри более сложных функций, и ловится не сразу. Особенно в шаблонном коде или при рефакторинге.

🔒 Как безопасно?

* Возвращайте по значению, если объект небольшой или RVO (return value optimization) работает:


std::string getName() {
std::string name = "John";
return name; // ок, RVO устранит копирование
}


* Или передавайте результат через параметр:


void getName(std::string& out) {
out = "John";
}


💡 Профит: избежите UB, багов-призраков и бессонных ночей.

📲 Мы в MAX

➡️ @cpp_geek
  • 👍 5
More from @cpp_geek
  1. Sep 24, 2026🎥 Вебинар по C++: Паттерн многопоточного программирования «Producer-Consumer» Когда неско…
  2. Sep 24, 2026Execution policy для параллельных алгоритмов Execution policy в C++ — это новшество, введе…
  3. Sep 17, 2026В чем разница между git fetch и git pull? Разница между этими командами заключается в том,…
  4. Sep 15, 2026std::tie std::tie — это функция, которая создает кортеж ссылок на lvalue из своих аргумент…
  5. Sep 11, 2026move constructor Move-конструктор — это специальный конструктор, который позволяет эффекти…
  6. Sep 9, 2026Move-only объекты и почему std::unique_ptr нельзя копировать Многие удивляются, когда комп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →