std::basic_stacktrace<Allocator>::current - cppreference.com

std::basic_stacktrace<Allocator>::current

来自cppreference.com
 
 
 
 
static basic_stacktrace current( const allocator_type& alloc =
                                     allocator_type() ) noexcept;
(1) (C++23 起)
static basic_stacktrace current( size_type skip, const allocator_type& alloc =
                                     allocator_type() ) noexcept;
(2) (C++23 起)
static basic_stacktrace current( size_type skip, size_type max_depth,
                                 const allocator_type& alloc =
                                     allocator_type() ) noexcept;
(3) (C++23 起)

s[i] (0 ≤ i < n) 代表当前执行线程中当前求值的第 i+1 个栈踪迹条目,其中 n 为栈踪迹中的栈踪迹条目个数。

1) 尝试创建由 s[0]s[1] …… s[n - 1] 组成的 basic_stacktrace
2) 尝试创建由 s[m]s[m + 1] …… s[n - 1] 组成的 basic_stacktrace,其中 mmin(skip, n)
3) 尝试创建由 s[m]s[m + 1] …… s[o - 1] 组成的 basic_stacktrace,其中 mmin(skip, n)omin(skip + max_depth, n)

如果 ship < skip + max_depthfalse(即 skip + max_depth 的数学结果上溢),那么行为未定义。

(C++26 前)

如果 ship < skip + max_depthfalse(即 skip + max_depth 的数学结果上溢),那么:

  • 如果实现是硬化实现,那么就会发生契约违背
  • 如果实现不是硬化实现,那么行为未定义。
(C++26 起)

所有情况下,将 alloc 存储到创建的 basic_stacktrace 中并用它分配栈踪迹条目的存储。

参数

alloc - 用于构造的 basic_stacktrace 的所有内存分配的分配器
skip - 要跳过的栈踪迹条目个数
max_depth - 栈踪迹条目的最大深度

返回值

分配成功时返回如上描述的 basic_stacktrace

否则返回空的 basic_stacktrace

示例

参阅