diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-24 02:13:48 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-24 02:13:48 +0100 |
| commit | 65a8349aa5526d071b18cd4d42586c46faaa3823 (patch) | |
| tree | f6e2063319ceaaa02f523fb5c289e4f37411a2df /examples/tracked_ptr | |
| parent | df4ec096491ded6d58b9ee094d6942e3188c2d4a (diff) | |
feat! breaking changes for OCL v1.0.48.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'examples/tracked_ptr')
| -rw-r--r-- | examples/tracked_ptr/CMakeLists.txt | 12 | ||||
| -rw-r--r-- | examples/tracked_ptr/tracked_ptr.cc | 52 |
2 files changed, 64 insertions, 0 deletions
diff --git a/examples/tracked_ptr/CMakeLists.txt b/examples/tracked_ptr/CMakeLists.txt new file mode 100644 index 0000000..ea1312a --- /dev/null +++ b/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 ../../include/ocl) diff --git a/examples/tracked_ptr/tracked_ptr.cc b/examples/tracked_ptr/tracked_ptr.cc new file mode 100644 index 0000000..0f7c43d --- /dev/null +++ b/examples/tracked_ptr/tracked_ptr.cc @@ -0,0 +1,52 @@ +/* + tracked_ptr example + written by Amlal El Mahrouss. + licensed under the Boost Software License + */ + +#include <memory/tracked_ptr.hpp> +#include <io/print.hpp> + +static void summon_tracked_ptr() +{ + ocl::memory::tracked_ptr<int> ptr = ocl::memory::make_tracked<int>(42); + std::cout << ptr.data() << "=" << ptr.manager().allocator().allocated_count_ << std::endl; +} + +static void summon_leak_tracked_ptr() +{ + ocl::memory::tracked_ptr<int>* ptr = new ocl::memory::tracked_ptr<int>(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(); + + ocl::memory::tracked_ptr<int> 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; + + ocl::memory::must_pass(ptr); + + return EXIT_SUCCESS; +} |
