CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 29 Jul 2025 16:30:01 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/memory/declare_reachable/
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 29 Jul 2025 16:30:01 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"7ff3-ewXkJTwrOUYZhYi9LswAg1eYRmo"
Content-Encoding: gzip
Declares the object pointed by the safely-derived pointer p reachable, even if later the compiler cannot trace any pointer to it.
This guarantees that, even in compilers implementing strict pointer safety, a dynamic object pointed by p will remain valid until undeclare_reachable is called with a value equal to p. At that point, a safely-derived pointer of the appropriate type can be obtained by the call to undeclare_reachable.
In garbage-collected implementations, a call to this function prevents the garbage collector from destroying the dynamic object pointed by p even if at some point no pointer or reference can be traced to refer to it.
If this function is called multiple times for the same object p, the object is considered reachable until the same number of calls to undeclare_reachable happen.
Because memory may be needed to be allocated to track the reachability of p, the function may throw a bad_alloc exception.
Output:
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<memory>
classes
- allocator
-
allocator_arg_tC++11
-
allocator_traitsC++11
- auto_ptr
- auto_ptr_ref
-
bad_weak_ptrC++11
-
default_deleteC++11
-
enable_shared_from_thisC++11
-
owner_lessC++11
-
pointer_traitsC++11
- raw_storage_iterator
-
shared_ptrC++11
-
unique_ptrC++11
-
uses_allocatorC++11
-
weak_ptrC++11
enum classes
-
pointer_safetyC++11
-
functions
-
addressofC++11
-
alignC++11
-
allocate_sharedC++11
-
const_pointer_castC++11
-
declare_no_pointersC++11
-
declare_reachableC++11
-
dynamic_pointer_castC++11
-
get_deleterC++11
-
get_pointer_safetyC++11
- get_temporary_buffer
-
make_sharedC++11
- return_temporary_buffer
-
static_pointer_castC++11
-
undeclare_no_pointersC++11
-
undeclare_reachableC++11
- uninitialized_copy
-
uninitialized_copy_nC++11
- uninitialized_fill
- uninitialized_fill_n
-
objects
-
allocator_argC++11
-
function
<memory>
std::declare_reachable
void declare_reachable (void* p);
Declare pointer as reachable
This guarantees that, even in compilers implementing strict pointer safety, a dynamic object pointed by p will remain valid until undeclare_reachable is called with a value equal to p. At that point, a safely-derived pointer of the appropriate type can be obtained by the call to undeclare_reachable.
In garbage-collected implementations, a call to this function prevents the garbage collector from destroying the dynamic object pointed by p even if at some point no pointer or reference can be traced to refer to it.
If this function is called multiple times for the same object p, the object is considered reachable until the same number of calls to undeclare_reachable happen.
Parameters
- p
- A safely-derived pointer, or a null pointer.
If a null pointer, the call has no effect.
Return value
noneBecause memory may be needed to be allocated to track the reachability of p, the function may throw a bad_alloc exception.
Example
|
|
Output:
p: 1 |
See also
- undeclare_reachable
- Undeclare pointer as reachable (function template)
- declare_no_pointers
- Declare memory block as containing no pointers (function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us