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;
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 * allocateMemory(Int64 size) override
Alloue un bloc pour size octets.
void freeMemory(void *address, Int64) override
Libère le bloc situé à l'adresse address contenant 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 -*-
std::int64_t Int64
Type entier signé sur 64 bits.