/
erlang.spawn
/
fallout2-ce
Обзор
Документация
Войти
/
erlang.spawn
/
fallout2-ce
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/memory.h
67 строк
1 KB
Vlad K
Expanded 4-slot barter UI from sfall + support FrmImage locking cached art by file name (#414)
26 апр 2026, 01:03
Не верифицирован
26 апр 2026, 01:03
c8a905e
Код
Авторство
О чём код?
#ifndef MEMORY_H #define MEMORY_H #include <cstddef> #include <type_traits> namespace fallout { char* internal_strdup(const char* string); void* internal_malloc(size_t size); void* internal_realloc(void* ptr, size_t size); void internal_free(void* ptr); void mem_check(); // Owning smart pointer for objects allocated with internal_malloc. template <typename T> class InternalPtr { public: static_assert(std::is_trivially_destructible_v<T>); InternalPtr() = default; explicit InternalPtr(T* ptr) : _ptr(ptr) { } ~InternalPtr() { reset(); } InternalPtr(const InternalPtr&) = delete; InternalPtr& operator=(const InternalPtr&) = delete; InternalPtr(InternalPtr&& other) noexcept : _ptr(other._ptr) { other._ptr = nullptr; } InternalPtr& operator=(InternalPtr&& other) noexcept { if (this != &other) { reset(); _ptr = other._ptr; other._ptr = nullptr; } return *this; } // Frees the resource and sets the pointer to null. Shouldn't normally be used, prefer destructor instead (RAII). void reset() { if (_ptr != nullptr) { internal_free(_ptr); _ptr = nullptr; } } T* get() const { return _ptr; } T* operator->() const { return _ptr; } T& operator*() const { return *_ptr; } explicit operator bool() const { return _ptr != nullptr; } private: T* _ptr = nullptr; }; } // namespace fallout #endif /* MEMORY_H */