diff --git a/src/D3D12MemAlloc.cpp b/src/D3D12MemAlloc.cpp
index 931fbb7..ff82d46 100644
--- a/src/D3D12MemAlloc.cpp
+++ b/src/D3D12MemAlloc.cpp
@@ -51,14 +51,6 @@
     #endif
 #endif
 
-#ifndef D3D12MA_DEBUG_ALWAYS_COMMITTED
-    /*
-    Every allocation will have its own memory block.
-    Define to 1 for debugging purposes only.
-    */
-    #define D3D12MA_DEBUG_ALWAYS_COMMITTED (0)
-#endif
-
 #ifndef D3D12MA_DEBUG_ALIGNMENT
     /*
     Minimum alignment of all allocations, in bytes.
@@ -2139,7 +2131,8 @@
     */
     static bool PrefersCommittedAllocation(const D3D12_RESOURCE_DESC& resourceDesc);
 
-    bool m_UseMutex;
+    const bool m_UseMutex;
+    const bool m_AlwaysCommitted;
     ID3D12Device* m_Device;
     UINT64 m_PreferredBlockSize;
     ALLOCATION_CALLBACKS m_AllocationCallbacks;
@@ -3239,6 +3232,7 @@
 
 AllocatorPimpl::AllocatorPimpl(const ALLOCATION_CALLBACKS& allocationCallbacks, const ALLOCATOR_DESC& desc) :
     m_UseMutex((desc.Flags & ALLOCATOR_FLAG_SINGLETHREADED) == 0),
+    m_AlwaysCommitted((desc.Flags & ALLOCATOR_FLAG_ALWAYS_COMMITTED) != 0),
     m_Device(desc.pDevice),
     m_PreferredBlockSize(desc.PreferredBlockSize != 0 ? desc.PreferredBlockSize : D3D12MA_DEFAULT_BLOCK_SIZE),
     m_AllocationCallbacks(allocationCallbacks),
@@ -3338,7 +3332,7 @@
 
     const UINT64 preferredBlockSize = blockVector->GetPreferredBlockSize();
     bool preferCommittedMemory =
-        D3D12MA_DEBUG_ALWAYS_COMMITTED ||
+        m_AlwaysCommitted ||
         PrefersCommittedAllocation(*pResourceDesc) ||
         // Heuristics: Allocate committed memory if requested size if greater than half of preferred block size.
         resAllocInfo.SizeInBytes > preferredBlockSize / 2;
@@ -3433,7 +3427,7 @@
 
     const UINT64 preferredBlockSize = blockVector->GetPreferredBlockSize();
     bool preferCommittedMemory =
-        D3D12MA_DEBUG_ALWAYS_COMMITTED ||
+        m_AlwaysCommitted ||
         // Heuristics: Allocate committed memory if requested size if greater than half of preferred block size.
         pAllocInfo->SizeInBytes > preferredBlockSize / 2;
     if(preferCommittedMemory &&
@@ -4039,6 +4033,7 @@
     m_Allocator = allocator;
     m_Type = TYPE_HEAP;
     m_Size = size;
+    m_Resource = NULL;
     m_Name = NULL;
     m_Heap.heapType = heapType;
     m_Heap.heap = heap;
diff --git a/src/D3D12MemAlloc.h b/src/D3D12MemAlloc.h
index c78a900..c7e91d2 100644
--- a/src/D3D12MemAlloc.h
+++ b/src/D3D12MemAlloc.h
@@ -539,6 +539,12 @@
     Using this flag may increase performance because internal mutexes are not used.
     */
     ALLOCATOR_FLAG_SINGLETHREADED = 0x1,
+
+    /**
+    Every allocation will have its own memory block.
+    To be used for debugging purposes.
+   */
+    ALLOCATOR_FLAG_ALWAYS_COMMITTED = 0x2,
 } ALLOCATOR_FLAGS;
 
 /// \brief Parameters of created Allocator object. To be used with CreateAllocator().
diff --git a/src/D3D12Sample.cpp b/src/D3D12Sample.cpp
index 9d8032d..aa7bfa0 100644
--- a/src/D3D12Sample.cpp
+++ b/src/D3D12Sample.cpp
@@ -48,6 +48,7 @@
 static const bool ENABLE_DEBUG_LAYER = true;
 static const bool ENABLE_CPU_ALLOCATION_CALLBACKS = true;
 static const bool ENABLE_CPU_ALLOCATION_CALLBACKS_PRINT = false;
+static constexpr D3D12MA::ALLOCATOR_FLAGS g_AllocatorFlags = D3D12MA::ALLOCATOR_FLAG_NONE;
 
 static HINSTANCE g_Instance;
 static HWND g_Wnd;
@@ -417,7 +418,7 @@
 
     {
         D3D12MA::ALLOCATOR_DESC desc = {};
-        desc.Flags = D3D12MA::ALLOCATOR_FLAG_NONE;
+        desc.Flags = g_AllocatorFlags;
         desc.pDevice = device;
 
         D3D12MA::ALLOCATION_CALLBACKS allocationCallbacks = {};
@@ -1376,6 +1377,7 @@
         TestContext ctx = {};
         ctx.device = g_Device;
         ctx.allocator = g_Allocator;
+        ctx.allocatorFlags = g_AllocatorFlags;
         Test(ctx);
     }
     catch(const std::exception& ex)
diff --git a/src/Tests.cpp b/src/Tests.cpp
index 2e69e95..19e11c7 100644
--- a/src/Tests.cpp
+++ b/src/Tests.cpp
@@ -217,6 +217,8 @@
 {
     wprintf(L"Test placed resources\n");
 
+    const bool alwaysCommitted = (ctx.allocatorFlags & D3D12MA::ALLOCATOR_FLAG_ALWAYS_COMMITTED) != 0;
+
     const UINT count = 4;
     const UINT64 bufSize = 32ull * 1024;
     ResourceWithAllocation resources[count];
@@ -240,7 +242,10 @@
         resources[i].allocation.reset(alloc);
 
         // Make sure it doesn't have implicit heap.
-        CHECK_BOOL( resources[i].allocation->GetHeap() != NULL );
+        if(!alwaysCommitted)
+        {
+            CHECK_BOOL( resources[i].allocation->GetHeap() != NULL );
+        }
     }
 
     // Make sure at least some of the resources belong to the same heap, but their memory ranges don't overlap.
@@ -260,7 +265,10 @@
             }
         }
     }
-    CHECK_BOOL(sameHeapFound);
+    if(!alwaysCommitted)
+    {
+        CHECK_BOOL(sameHeapFound);
+    }
 
     // Additionally create a texture to see if no error occurs due to bad handling of Resource Tier.
     resourceDesc = {};
@@ -347,7 +355,7 @@
 
     D3D12_RESOURCE_ALLOCATION_INFO allocInfo = {};
     allocInfo.Alignment = std::max(allocInfo1.Alignment, allocInfo2.Alignment);
-    allocInfo.SizeInBytes = std::max(allocInfo1.SizeInBytes, allocInfo2.SizeInBytes);
+    allocInfo.SizeInBytes = AlignUp(std::max(allocInfo1.SizeInBytes, allocInfo2.SizeInBytes), 64ull * 1024);
 
     D3D12MA::Allocation* allocPtr = NULL;
     CHECK_HR( ctx.allocator->AllocateMemory(
diff --git a/src/Tests.h b/src/Tests.h
index e67c5ee..8bbe247 100644
--- a/src/Tests.h
+++ b/src/Tests.h
@@ -28,6 +28,7 @@
 {
     ID3D12Device* device;
     D3D12MA::Allocator* allocator;
+    D3D12MA::ALLOCATOR_FLAGS allocatorFlags;
 };
 
 void Test(const TestContext& ctx);
