diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index 30b07303ff..39953c3de7 100644
--- a/src/backend/port/win32_shmem.c
+++ b/src/backend/port/win32_shmem.c
@@ -576,6 +576,9 @@ pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
 		 */
 		elog(LOG, "reserved shared memory region got incorrect address %p, expected %p",
 			 address, ShmemProtectiveRegion);
+		if (VirtualFree(ShmemProtectiveRegion, 0, MEM_RELEASE) == 0)
+			elog(FATAL, "failed to release reserved memory region (addr=%p): error code %lu",
+				ShmemProtectiveRegion, GetLastError());
 		return false;
 	}
 
@@ -592,6 +595,9 @@ pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
 	{
 		elog(LOG, "reserved shared memory region got incorrect address %p, expected %p",
 			 address, UsedShmemSegAddr);
+		if (VirtualFree(UsedShmemSegAddr, 0, MEM_RELEASE) == 0)
+			elog(FATAL, "failed to release reserved memory region (addr=%p): error code %lu",
+				UsedShmemSegAddr, GetLastError());
 		return false;
 	}