8#include <gtest/gtest.h>
10#include "arccore/common/internal/MemoryPool.h"
11#include "arccore/common/internal/MemoryResourceMng.h"
12#include "arccore/common/internal/MemoryUtilsInternal.h"
14#include "arcane/utils/String.h"
20using namespace Arcane::Impl;
29 void freeMemory(
void* address,
size_t)
override { std::free(address); }
38 MemoryPool memory_pool(&my_allocator,
"MyMemoryPool");
39 size_t max_block_size = 1024 * 8;
40 memory_pool.setMaxCachedBlockSize(1024 * 8);
42 void* a1 = memory_pool.allocateMemory(25);
43 void* a2 = memory_pool.allocateMemory(47);
44 memory_pool.freeMemory(a1, 25);
45 memory_pool.freeMemory(a2, 47);
46 void* a3 = memory_pool.allocateMemory(25);
47 memory_pool.dumpStats(std::cout);
48 memory_pool.dumpFreeMap(std::cout);
49 memory_pool.freeMemory(a3, 25);
51 void* a4 = memory_pool.allocateMemory(max_block_size * 2);
52 memory_pool.freeMemory(a4, max_block_size * 2);
54 std::cout <<
"End Of Test\n";
55 memory_pool.dumpStats(std::cout);
56 memory_pool.dumpFreeMap(std::cout);
57 memory_pool.freeCachedMemory();
64 MemoryPool memory_pool(&my_allocator,
"MyMemoryPool");
69 ASSERT_EQ(p, memory_pool_ptr);
Fonctions utilitaires de gestion mémoire.
Interface d'un pool mémoire.
Interface d'un allocateur pour un MemoryPool.
Classe pour gérer une liste de zones allouées.
Gestion des ressources mémoire pour les CPU et accélérateurs.
void setMemoryPool(eMemoryResource r, IMemoryPool *pool) override
Positionne le pool mémoire pour la ressource r.
void freeMemory(void *address, size_t) override
Libère le bloc situé à l'adresse address contenant size octets.
void * allocateMemory(size_t size) override
Alloue un bloc pour size octets.
ARCCORE_COMMON_EXPORT IMemoryRessourceMng * setDataMemoryResourceMng(IMemoryRessourceMng *mng)
Positionne le gestionnaire de ressource mémoire pour les données.
ARCCORE_COMMON_EXPORT IMemoryPool * getMemoryPoolOrNull(eMemoryResource mem_resource)
Pool mémoire pour la ressource mem_resource.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-