Added VmaVector::shrink_to_fit instead of freeMemory parameter in resize, clear, to fix compilation with VMA_USE_STL_CONTAINERS

Closes #175, closes #176
diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h
index 49793f5..66ae85b 100644
--- a/include/vk_mem_alloc.h
+++ b/include/vk_mem_alloc.h
@@ -5102,17 +5102,13 @@
         }

     }

 

-    void resize(size_t newCount, bool freeMemory = false)

+    void resize(size_t newCount)

     {

         size_t newCapacity = m_Capacity;

         if(newCount > m_Capacity)

         {

             newCapacity = VMA_MAX(newCount, VMA_MAX(m_Capacity * 3 / 2, (size_t)8));

         }

-        else if(freeMemory)

-        {

-            newCapacity = newCount;

-        }

 

         if(newCapacity != m_Capacity)

         {

@@ -5130,9 +5126,25 @@
         m_Count = newCount;

     }

 

-    void clear(bool freeMemory = false)

+    void clear()

     {

-        resize(0, freeMemory);

+        resize(0);

+    }

+

+    void shrink_to_fit()

+    {

+        if(m_Capacity > m_Count)

+        {

+            T* newArray = VMA_NULL;

+            if(m_Count > 0)

+            {

+                newArray = VmaAllocateArray<T>(m_Allocator.m_pCallbacks, m_Count);

+                memcpy(newArray, m_pArray, m_Count * sizeof(T));

+            }

+            VmaFree(m_Allocator.m_pCallbacks, m_pArray);

+            m_Capacity = m_Count;

+            m_pArray = newArray;

+        }

     }

 

     void insert(size_t index, const T& src)

@@ -5312,12 +5324,16 @@
         if(newCount > N && m_Count > N)

         {

             // Any direction, staying in m_DynamicArray

-            m_DynamicArray.resize(newCount, freeMemory);

+            m_DynamicArray.resize(newCount);

+            if(freeMemory)

+            {

+                m_DynamicArray.shrink_to_fit();

+            }

         }

         else if(newCount > N && m_Count <= N)

         {

             // Growing, moving from m_StaticArray to m_DynamicArray

-            m_DynamicArray.resize(newCount, freeMemory);

+            m_DynamicArray.resize(newCount);

             if(m_Count > 0)

             {

                 memcpy(m_DynamicArray.data(), m_StaticArray, m_Count * sizeof(T));

@@ -5330,7 +5346,11 @@
             {

                 memcpy(m_StaticArray, m_DynamicArray.data(), newCount * sizeof(T));

             }

-            m_DynamicArray.resize(0, freeMemory);

+            m_DynamicArray.resize(0);

+            if(freeMemory)

+            {

+                m_DynamicArray.shrink_to_fit();

+            }

         }

         else

         {

@@ -5341,7 +5361,11 @@
 

     void clear(bool freeMemory = false)

     {

-        m_DynamicArray.clear(freeMemory);

+        m_DynamicArray.clear();

+        if(freeMemory)

+        {

+            m_DynamicArray.shrink_to_fit();

+        }

         m_Count = 0;

     }