diff options
author | chai <chaifix@163.com> | 2021-10-28 19:27:57 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-28 19:27:57 +0800 |
commit | 720e718186e6ec0e76bc08a9cedf9f08afc5e904 (patch) | |
tree | 420a4d4801dec1933eed9b62a8829974a4a24b77 /Runtime/Utilities | |
parent | 74c5bd68a9110139aae8ca51067459da909fb10e (diff) |
*misc
Diffstat (limited to 'Runtime/Utilities')
-rw-r--r-- | Runtime/Utilities/DynamicArray.cpp | 0 | ||||
-rw-r--r-- | Runtime/Utilities/DynamicArray.h | 34 |
2 files changed, 34 insertions, 0 deletions
diff --git a/Runtime/Utilities/DynamicArray.cpp b/Runtime/Utilities/DynamicArray.cpp deleted file mode 100644 index e69de29..0000000 --- a/Runtime/Utilities/DynamicArray.cpp +++ /dev/null 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<typename T>
+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 |