Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на C++ — оборачивание C API в безопасные RAII-объекты.
Многие библиотеки на C (например, OpenSSL, SQLite, libpng) требуют вручную управлять ресурсами — открывать, закрывать, аллоцировать и освобождать. Это источник ошибок: забыли free(), упустили close(), получили утечку памяти или файлового дескриптора.
В C++ мы можем обернуть такие ресурсы в класс с аккуратным деструктором:
class FileHandle { public: explicit FileHandle(FILE* file) : file_(file) {} ~FileHandle() { if (file_) { fclose(file_); } }
FILE* get() const { return file_; }
private: FILE* file_; };
Теперь, даже если функция выбросит исключение или произойдет выход из области видимости, файл закроется автоматически!
Такие классы легко комбинировать с std::unique_ptr через кастомные делетеры для ещё большей безопасности.
Не забывайте: RAII (Resource Acquisition Is Initialization) — один из важнейших паттернов для профессионального C++.
Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на C++ — оборачивание C API в безопасные RAII-объекты.
Многие библиотеки на C (например, OpenSSL, SQLite, libpng) требуют вручную управлять ресурсами — открывать, закрывать, аллоцировать и освобождать. Это источник ошибок: забыли free(), упустили close(), получили утечку памяти или файлового дескриптора.
В C++ мы можем обернуть такие ресурсы в класс с аккуратным деструктором:
class FileHandle { public: explicit FileHandle(FILE* file) : file_(file) {} ~FileHandle() { if (file_) { fclose(file_); } }
FILE* get() const { return file_; }
private: FILE* file_; };
Теперь, даже если функция выбросит исключение или произойдет выход из области видимости, файл закроется автоматически!
Такие классы легко комбинировать с std::unique_ptr через кастомные делетеры для ещё большей безопасности.
Не забывайте: RAII (Resource Acquisition Is Initialization) — один из важнейших паттернов для профессионального C++.
Among the actives, Ascendas REIT sank 0.64 percent, while CapitaLand Integrated Commercial Trust plummeted 1.42 percent, City Developments plunged 1.12 percent, Dairy Farm International tumbled 0.86 percent, DBS Group skidded 0.68 percent, Genting Singapore retreated 0.67 percent, Hongkong Land climbed 1.30 percent, Mapletree Commercial Trust lost 0.47 percent, Mapletree Logistics Trust tanked 0.95 percent, Oversea-Chinese Banking Corporation dropped 0.61 percent, SATS rose 0.24 percent, SembCorp Industries shed 0.54 percent, Singapore Airlines surrendered 0.79 percent, Singapore Exchange slid 0.30 percent, Singapore Press Holdings declined 1.03 percent, Singapore Technologies Engineering dipped 0.26 percent, SingTel advanced 0.81 percent, United Overseas Bank fell 0.39 percent, Wilmar International eased 0.24 percent, Yangzijiang Shipbuilding jumped 1.42 percent and Keppel Corp, Thai Beverage, CapitaLand and Comfort DelGro were unchanged.
How To Find Channels On Telegram?
There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.