이 페이지는 `IUnityMemoryManager
인터페이스에 대한 API 레퍼런스를 제공합니다.
UnityAllocator* (UNITY_INTERFACE_API * CreateAllocator)(const char* areaName, const char* objectName);
파라미터 | 설명 |
---|---|
const char* areaName | 이 할당자의 광범위한 카테고리의 이름입니다. |
const char* objectName | 이 특정 할당자의 이름입니다. |
메모리 블록을 할당할 수 있는 새 할당자 오브젝트를 생성합니다.
void(UNITY_INTERFACE_API * DestroyAllocator)(UnityAllocator * allocator);
파라미터 | 설명 |
---|---|
UnityAllocator * allocator | 삭제할 할당자입니다. |
기존 할당자 오브젝트를 삭제합니다.
void* (UNITY_INTERFACE_API * Allocate)(UnityAllocator * allocator, size_t size, size_t align, const char* file, int32_t line);
파라미터 | 설명 |
---|---|
UnityAllocator * allocator | 할당에 사용할 할당자입니다. |
size_t size | 할당할 메모리 양(바이트)입니다. |
size_t align | 결과 포인터에 대한 메모리 주소의 정렬입니다. |
const char* file | 이 할당을 위한 호출이 발생한 소스 파일의 경로입니다.여기서 사전 정의된 macro FILE 을 사용합니다. |
int32_t line | 이 할당을 위한 호출이 발생한 소스 파일 내의 라인 번호입니다.여기서 사전 정의된 macro LINE 을 사용합니다. |
기존 할당자를 사용하여 메모리 블록을 할당합니다.이 메서드는 새로 할당된 메모리에 대한 포인터를 반환합니다.
void(UNITY_INTERFACE_API * Deallocate)(UnityAllocator * allocator, void* ptr, const char* file, int32_t line);
파라미터 | 설명 |
---|---|
UnityAllocator * allocator | 할당 해제에 사용할 할당자입니다. |
void* ptr | 할당 해제할 메모리에 대한 포인터입니다. |
const char* file | 이 할당 해제를 위한 호출이 발생한 소스 파일의 경로입니다.여기서 사전 정의된 macro FILE 을 사용합니다. |
int32_t line | 이 할당 해제를 위한 호출이 발생한 소스 파일 내의 라인 번호입니다.여기서 사전 정의된 macro LINE 을 사용합니다. |
지정된 포인터가 가리키는 메모리를 할당 해제합니다.이렇게 해도 포인터가 NULL로 설정되지 않습니다.
void* (UNITY_INTERFACE_API * Reallocate)(UnityAllocator * allocator, void* ptr, size_t size, size_t align, const char* file, int32_t line);
파라미터 | 설명 |
---|---|
UnityAllocator * allocator | 재할당 연산에 사용할 할당자입니다. |
void* ptr | 할당 해제할 메모리에 대한 포인터입니다. |
size_t size | 할당할 메모리 양(바이트)입니다. |
size_t align | 결과 포인터에 대한 메모리 주소의 정렬입니다. |
const char* file | 이 재할당을 위한 호출이 발생한 소스 파일의 경로입니다.여기서 사전 정의된 macro FILE 을 사용합니다. |
int32_t line | 이 재할당을 위한 호출이 발생한 소스 파일 내의 라인 번호입니다.여기서 사전 정의된 macro LINE 을 사용합니다. |
기존 포인터를 다른 메모리 블록을 가리키도록 재할당합니다.
아래는 IUnityMemoryManager
인터페이스의 구현 예시입니다.
# include "IUnityInterface.h"
# include "IUnityMemoryManager.h"
# include <cstdint>
static IUnityMemoryManager* s_MemoryManager = NULL;
static UnityAllocator* s_Alloc = NULL;
extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityPluginLoad(IUnityInterfaces * unityInterfaces)
{
s_MemoryManager = unityInterfaces->Get<IUnityMemoryManager>();
if (s_MemoryManager == NULL)
return;
// Create an allocator.This allows you to see the allocation root in the profiler when taking snapshots.Under NativePlugins - Plugin Backend Allocator
// All memory allocated here also goes under kMemNativePlugin
s_Alloc = s_MemoryManager->CreateAllocator("NativePlugins", "Plugin Backend Allocator");
}
extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityPluginUnload()
{
//Free allocator
s_MemoryManager->DestroyAllocator(s_Alloc);
s_Alloc = NULL;
s_MemoryManager = NULL;
}
void DoMemoryOperations()
{
// Allocate 1KB memory
void* mem = s_MemoryManager->Allocate(s_Alloc, 1 * 1024, 16, __FILE__, __LINE__);
// Reallocate the same pointer with 2KB
mem = s_MemManager->Reallocate(s_Alloc, mem, 2 * 1024, 16, __FILE__, __LINE__);
// Delete allocated memory
s_MemoryManager->Deallocate(s_Alloc, mem, __FILE__, __LINE__);
}
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.