From c52dbf5513ae7f106634967162da5cfb01dc5af3 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 26 Jul 2025 01:47:32 +0100 Subject: feat: SOCL v1.0.2, changelog soon! Signed-off-by: Amlal El Mahrouss --- dev/examples/tracked_ptr/CMakeLists.txt | 12 ++++++++ dev/examples/tracked_ptr/tracked_ptr.cc | 52 +++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 dev/examples/tracked_ptr/CMakeLists.txt create mode 100644 dev/examples/tracked_ptr/tracked_ptr.cc (limited to 'dev/examples/tracked_ptr') diff --git a/dev/examples/tracked_ptr/CMakeLists.txt b/dev/examples/tracked_ptr/CMakeLists.txt new file mode 100644 index 0000000..9396506 --- /dev/null +++ b/dev/examples/tracked_ptr/CMakeLists.txt @@ -0,0 +1,12 @@ + +cmake_minimum_required(VERSION 3.15...3.31) + +project( + Fix + VERSION 1.0 + LANGUAGES CXX) + +add_executable(TrackedPtr tracked_ptr.cc) + +set_property(TARGET TrackedPtr PROPERTY CXX_STANDARD 20) +target_include_directories(TrackedPtr PUBLIC ../../) diff --git a/dev/examples/tracked_ptr/tracked_ptr.cc b/dev/examples/tracked_ptr/tracked_ptr.cc new file mode 100644 index 0000000..c182494 --- /dev/null +++ b/dev/examples/tracked_ptr/tracked_ptr.cc @@ -0,0 +1,52 @@ +/* + tracked_ptr example + written by Amlal El Mahrouss. + licensed under the MIT license + */ + +#include +#include + +void summon_tracked_ptr() +{ + snu::memory::tracked_ptr ptr = snu::memory::make_tracked(42); + std::cout << ptr.data() << "=" << ptr.manager().allocator().allocated_count_ << std::endl; +} + +void summon_leak_tracked_ptr() +{ + snu::memory::tracked_ptr* ptr = new snu::memory::tracked_ptr(42); + std::cout << ptr->data() << "=" << ptr->manager().allocator().allocated_count_ << std::endl; +} + +/* finally test it */ +int main(int argc, char** argv) +{ + summon_tracked_ptr(); + summon_tracked_ptr(); + summon_tracked_ptr(); + summon_tracked_ptr(); + + snu::memory::tracked_ptr ptr; + + std::cout << ptr.data() << "=" << ptr.manager().allocator().allocated_count_ << std::endl; + + std::cout << "total=" << ptr.manager().allocator().deallocated_count_ << std::endl; + + std::cout << "leak-detected=" << std::boolalpha << (ptr.manager().allocator().allocated_count_ > ptr.manager().allocator().deallocated_count_) << std::endl; + + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + summon_leak_tracked_ptr(); + + std::cout << "total=" << ptr.manager().allocator().deallocated_count_ << std::endl; + + std::cout << "leak-detected=" << std::boolalpha << (ptr.manager().allocator().allocated_count_ > ptr.manager().allocator().deallocated_count_) << std::endl; + + return 0; +} -- cgit v1.2.3