summaryrefslogtreecommitdiffhomepage
path: root/examples/tracked_ptr/tracked_ptr.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-23 20:16:02 -0500
committerGitHub <noreply@github.com>2025-11-23 20:16:02 -0500
commit85f89ee4bb137100cbeffcbc10168eb8ea52e6cc (patch)
treef6e2063319ceaaa02f523fb5c289e4f37411a2df /examples/tracked_ptr/tracked_ptr.cc
parent9a70f32ddaec0eef99efbf7ff5597c2adf08f45a (diff)
parent65a8349aa5526d071b18cd4d42586c46faaa3823 (diff)
Merge pull request #18 from amlel-el-mahrouss/developv1.0.48
OCL v1.0.48
Diffstat (limited to 'examples/tracked_ptr/tracked_ptr.cc')
-rw-r--r--examples/tracked_ptr/tracked_ptr.cc52
1 files changed, 52 insertions, 0 deletions
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;
+}