Шпаргалка: C/C++
Ключевые моменты и частые ошибки, о которых стоит помнить.
Управление памятью в C
- `malloc(size_t size)`: Выделяет `size` байт памяти. Возвращает `void*`. Не забывайте проверять на `NULL`.
- `calloc(size_t num, size_t size)`: Выделяет память для `num` элементов размера `size` и инициализирует ее нулями.
- `realloc(void* ptr, size_t new_size)`: Изменяет размер уже выделенного блока памяти.
- `free(void* ptr)`: Освобождает ранее выделенную память. Ошибка "двойного освобождения" (double free) — одна из самых частых.
RAII (Resource Acquisition Is Initialization) в C++
Фундаментальный принцип C++. Ресурс (память, файл, сокет) "захватывается" в конструкторе объекта, а освобождается в деструкторе. Это гарантирует освобождение ресурса при выходе из области видимости.
// Пример с умным указателем
#include <memory>
void raii_example() {
std::unique_ptr<MyObject> ptr = std::make_unique<MyObject>();
// Память будет автоматически освобождена, когда ptr выйдет из области видимости
}
Разница между `struct` и `class` в C++
Единственное отличие: у `struct` члены и наследование по умолчанию `public`, а у `class` — `private`.