docs/Writerside/topics/memory.md

Sun, 23 Nov 2025 13:15:19 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:15:19 +0100
changeset 1508
dfc0ddd9571e
parent 1318
12fa1d37fe48
permissions
-rw-r--r--

optimize sorted insertion by using the infimum instead of the supremum

The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.

1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 # Memory Management
1170
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
2
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
3 With the `CxAllocator` interface UCX provides the possibility to use custom allocator functions for different purposes.
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
4 Many UCX functions support the use of specialized allocators or provide a second function suffixed with `_a`.
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
5
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
6 For convenience, functions that are not explicitly requesting an allocator - like e.g. `cx_strdup_a()` - also accept
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1210
diff changeset
7 `NULL` as an allocator, in which case the [default allocator](allocator.h.md#default-allocator) is used.
1170
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
8
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
9 Additionally, UCX also provides a [memory pool](mempool.h.md) implementation of the allocator interface.
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
10
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
11 > Although not part of the public API, UCX is also implementing the allocator interface
49cc0bbea6a9 add Memory Management Section description
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
12 > in its own test suite: `CxTestingAllocator`. This allocator keeps track of memory allocations
1210
2ad0cf0f314b complete the printf documentation and fix code formatting
Mike Becker <universe@uap-core.de>
parents: 1170
diff changeset
13 > and deallocations with the goal to detect memory management errors.

mercurial