HikoGUI
Select Version:
main (latest dev)
0.8.1 (latest)
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
theme-value
theme-tag
text
ranged-int
phrase-mask-chars
new-window-widget
msvs-bug-20230517
msvs-bug-20230503
msvs-bug-20230428
msvc-c1001-20231106
msvc-bug-20230706
msvc-bug-20221214
modules-part1
label-delegate
bug-msvs-20220928
attribute-parser
⚠️ This documents the
main
development branch of HikoGUI. It might differ from release versions.
A low latency retained GUI
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Variables
c
d
g
i
l
o
p
r
s
t
x
Typedefs
Enumerations
a
b
c
d
f
g
h
k
l
p
s
t
u
v
w
Concepts
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Related Symbols
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
Files
File List
Globals
All
Functions
Macros
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Concepts
Loading...
Searching...
No Matches
src
hikogui
memory
secure_memory_allocator.hpp
1
// Copyright Take Vos 2022.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5
#pragma once
6
7
#include "../security/security.hpp"
8
#include "../macros.hpp"
9
#include <type_traits>
10
#include <cstddef>
11
#include <memory>
12
13
hi_export_module(hikogui.memory.secure_memory_allocator);
14
15
hi_export
namespace
hi::inline
v1
{
16
19
template
<
typename
T>
20
class
secure_memory_allocator
{
21
public
:
22
using
value_type = T;
23
using
size_type
=
std::size_t
;
24
using
difference_type = ptrdiff_t;
25
26
template
<
typename
U>
27
struct
rebind
{
28
using
other
=
secure_memory_allocator<U>
;
29
};
27
struct
rebind
{
…
};
30
31
constexpr
secure_memory_allocator
() noexcept {};
32
33
constexpr
secure_memory_allocator
(
secure_memory_allocator
const
&other)
noexcept
{}
34
35
template
<
typename
U>
36
constexpr
secure_memory_allocator(secure_memory_allocator<U>
const
&other)
noexcept
37
{
38
}
39
40
[[nodiscard]] value_type *allocate(size_type n)
const
noexcept
41
{
42
auto
allocator =
std::allocator<std::byte>
{};
43
auto
*p =
std::allocator_traits
<
decltype
(allocator)>::allocate(allocator, n *
sizeof
(value_type));
44
return
reinterpret_cast<
value_type *
>
(p);
45
}
46
47
void
deallocate(value_type *p, size_type n)
const
noexcept
48
{
49
secure_clear
(p, n *
sizeof
(value_type));
50
51
auto
allocator =
std::allocator<std::byte>
{};
52
std::allocator_traits
<
decltype
(allocator)>::deallocate(allocator,
reinterpret_cast<
std::byte *
>
(p), n *
sizeof
(value_type));
53
}
54
};
20
class
secure_memory_allocator
{
…
};
55
56
}
// namespace hi::inline v1
v1
DOXYGEN BUG.
Definition
algorithm_misc.hpp:20
v1::secure_clear
void secure_clear(void *ptr, size_t size) noexcept
Securely clear memory.
Definition
security_win32_impl.hpp:16
v1::secure_memory_allocator
Memory allocator which will securely clear the memory when deallocated.
Definition
secure_memory_allocator.hpp:20
v1::secure_memory_allocator::rebind
Definition
secure_memory_allocator.hpp:27
std::allocator
std::allocator_traits
std::size_t
Generated on Mon Apr 22 2024 12:51:37 for HikoGUI by
1.10.0