Blender V4.3
guardedalloc_alignment_test.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2014-2022 Blender Authors
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "testing/testing.h"
6
7#include "BLI_utildefines.h"
8
9#include "MEM_guardedalloc.h"
11
12#define CHECK_ALIGNMENT(ptr, align) EXPECT_EQ(size_t(ptr) % align, 0)
13
14namespace {
15
16void DoBasicAlignmentChecks(const int alignment)
17{
18 int *foo, *bar;
19
20 foo = (int *)MEM_mallocN_aligned(sizeof(int) * 10, alignment, "test");
21 CHECK_ALIGNMENT(foo, alignment);
22
23 bar = (int *)MEM_dupallocN(foo);
24 CHECK_ALIGNMENT(bar, alignment);
25 MEM_freeN(bar);
26
27 foo = (int *)MEM_reallocN(foo, sizeof(int) * 5);
28 CHECK_ALIGNMENT(foo, alignment);
29
30 foo = (int *)MEM_recallocN(foo, sizeof(int) * 5);
31 CHECK_ALIGNMENT(foo, alignment);
32
33 MEM_freeN(foo);
34}
35
36} // namespace
37
39{
40 DoBasicAlignmentChecks(1);
41 DoBasicAlignmentChecks(2);
42 DoBasicAlignmentChecks(4);
43 DoBasicAlignmentChecks(8);
44 DoBasicAlignmentChecks(16);
45 DoBasicAlignmentChecks(32);
46 DoBasicAlignmentChecks(256);
47 DoBasicAlignmentChecks(512);
48}
49
51{
52 DoBasicAlignmentChecks(1);
53 DoBasicAlignmentChecks(2);
54 DoBasicAlignmentChecks(4);
55 DoBasicAlignmentChecks(8);
56 DoBasicAlignmentChecks(16);
57 DoBasicAlignmentChecks(32);
58 DoBasicAlignmentChecks(256);
59 DoBasicAlignmentChecks(512);
60}
Read Guarded memory(de)allocation.
#define MEM_recallocN(vmemh, len)
#define MEM_reallocN(vmemh, len)
TEST_F(LockFreeAllocatorTest, MEM_mallocN_aligned)
#define CHECK_ALIGNMENT(ptr, align)
void * MEM_mallocN_aligned(size_t len, size_t alignment, const char *str)
Definition mallocn.cc:110
void MEM_freeN(void *vmemh)
Definition mallocn.cc:105
void *(* MEM_dupallocN)(const void *vmemh)
Definition mallocn.cc:39