summaryrefslogtreecommitdiffhomepage
path: root/dev/examples/tracked_ptr/tracked_ptr.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-07-26 01:47:32 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-07-26 01:47:32 +0100
commitc52dbf5513ae7f106634967162da5cfb01dc5af3 (patch)
treeb6715d0fdacebd48491b9b05cf85f1d92028f84b /dev/examples/tracked_ptr/tracked_ptr.cc
parent01565adb9cf5ef991196f56c7f5f7b6161daa005 (diff)
feat: SOCL v1.0.2, changelog soon!v1.0.2
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/examples/tracked_ptr/tracked_ptr.cc')
-rw-r--r--dev/examples/tracked_ptr/tracked_ptr.cc52
1 files changed, 52 insertions, 0 deletions
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 <lib/memory/tracked_ptr.hpp>
+#include <iostream>
+
+void summon_tracked_ptr()
+{
+ snu::memory::tracked_ptr<int> 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<int>* ptr = new snu::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();
+
+ snu::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;
+
+ return 0;
+}