From 720e718186e6ec0e76bc08a9cedf9f08afc5e904 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 28 Oct 2021 19:27:57 +0800 Subject: *misc --- Runtime/Utilities/DynamicArray.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Runtime/Utilities/DynamicArray.h') diff --git a/Runtime/Utilities/DynamicArray.h b/Runtime/Utilities/DynamicArray.h index e69de29..16680bc 100644 --- a/Runtime/Utilities/DynamicArray.h +++ b/Runtime/Utilities/DynamicArray.h @@ -0,0 +1,34 @@ +#pragma once + +enum { kDynamicArrayThreshold = 64 }; + +// 阈值之内在栈上保存,超过阈值在堆上保存,并自动释放 +template +class DynamicArray +{ +public: + DynamicArray(int capacity) + { + if (capacity * sizeof(T) > kDynamicArrayThreshold) + { + m_Data = malloc(capacity * sizeof(T)); + } + else + { + m_Data = alloca(capacity * sizeof(T)); + } + } + ~DynamicArray() + { + delete[] m_Data; + } + +private: + void* operator new(std::size_t); + + T* m_Data; + +}; + +//https://www.jianshu.com/p/7737dab9c32b +//https://blog.csdn.net/WUDAIJUN/article/details/9273339 \ No newline at end of file -- cgit v1.1-26-g67d0