diff --git a/Documentation/SmartPointers.md b/Documentation/SmartPointers.md index 06bf0bfd255..df34c60bd8c 100644 --- a/Documentation/SmartPointers.md +++ b/Documentation/SmartPointers.md @@ -1,14 +1,11 @@ # AK smart pointers ----- ## Introduction There are three main C++ smart pointer types used in Ladybird. Each type describes the ownership (or lack thereof) of the pointee. The reason for using these pointers is to make it explicit through code who owns which resources, and how ownership is transferred. They also serve as a guard against memory leaks and use-after-free bugs. - ----- ## OwnPtr\ and NonnullOwnPtr\ `OwnPtr` is used for single-owner objects. An object held in an `OwnPtr` is owned by that `OwnPtr`, and not by anybody else. @@ -68,7 +65,6 @@ In this case, the *non-throwing* `new` should be used to construct the raw point **Note:** Always prefer the helper functions to manual construction. ----- ## RefPtr\ and NonnullRefPtr\ `RefPtr` is used for multiple-owner objects. An object held by a `RefPtr` is owned together by every pointer pointing to that object. @@ -133,7 +129,6 @@ In this case, the *non-throwing* `new` should be used to construct the raw point **Note:** Always prefer the helper functions to manual construction. ----- ## WeakPtr\ `WeakPtr` is used for objects that somebody else owns. When the pointee of a `WeakPtr` is deleted, the `WeakPtr` will magically become null.