CPP_GEEK Telegram 311
Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на 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++.

➡️ @cpp_geek
👍121



tgoop.com/cpp_geek/311
Create:
Last Update:

Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на 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++.

➡️ @cpp_geek

BY C++ geek


Share with your friend now:
tgoop.com/cpp_geek/311

View MORE
Open in Telegram


Telegram News

Date: |

With the administration mulling over limiting access to doxxing groups, a prominent Telegram doxxing group apparently went on a "revenge spree." A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. Read now Matt Hussey, editorial director at NEAR Protocol also responded to this news with “#meIRL”. Just as you search “Bear Market Screaming” in Telegram, you will see a Pepe frog yelling as the group’s featured image.
from us


Telegram C++ geek
FROM American