diff --git a/development/cpp/core_types.rst b/development/cpp/core_types.rst index 1851a5624..f87b54f37 100644 --- a/development/cpp/core_types.rst +++ b/development/cpp/core_types.rst @@ -85,7 +85,7 @@ For C-style allocation, Godot provides a few macros: memrealloc() memfree() -These are equivalent to the usual malloc, realloc, free of the standard +These are equivalent to the usual malloc, realloc, free of the standard C library. For C++-style allocation, special macros are provided: @@ -103,31 +103,30 @@ which are equivalent to new, delete, new[] and delete[]. memnew/memdelete also use a little C++ magic and notify Objects right after they are created, and right before they are deleted. -For dynamic memory, the DVector<> template is provided. Use it -like this: +For dynamic memory, the PoolVector<> template is provided. PoolVector is a +standard vector class, and is very similar to vector in the C++ standard library. +To create a PoolVector buffer, use this: .. code:: cpp - DVector + PoolVector data; -DVector is a standard vector class, it can be accessed using the [] -operator, but that's probably slow for large amount of accesses (as it -has to lock internally). A few helpers exist for this: +PoolVector can be accessed using the [] operator and a few helpers exist for this: .. code:: cpp - DVector::Read r = dvector.read() + PoolVector::Read r = data.read() int someint = r[4] -and - .. code:: cpp - DVector::Write w = dvector.write() - w[4]=22; + PoolVector::Write w = data.write() + w[4] = 22; -respectively. These allow fast read/write from DVectors and keep it -locked until they go out of scope. +These operations allow fast read/write from PoolVectors and keep it +locked until they go out of scope. However, PoolVectors should be used +for small, dynamic memory operations, as read() and write() are too slow for a +large amount of accesses. References: ~~~~~~~~~~~