diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index 30b07303ff..e8911a9999 100644
--- a/src/backend/port/win32_shmem.c
+++ b/src/backend/port/win32_shmem.c
@@ -576,6 +576,7 @@ pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
 		 */
 		elog(LOG, "reserved shared memory region got incorrect address %p, expected %p",
 			 address, ShmemProtectiveRegion);
+		VirtualFreeEx(hChild, address, 0, MEM_RELEASE);
 		return false;
 	}
 
@@ -592,6 +593,7 @@ pgwin32_ReserveSharedMemoryRegion(HANDLE hChild)
 	{
 		elog(LOG, "reserved shared memory region got incorrect address %p, expected %p",
 			 address, UsedShmemSegAddr);
+		VirtualFreeEx(hChild, address, 0, MEM_RELEASE);
 		return false;
 	}