### Godot version

master CI builds

### System information

Linux / Editor with doubles and GCC sanitizers

### Issue description

The `Linux / Editor with doubles and GCC sanitizers` build can fail with a `attempting free on address which was not malloc()-ed` crash in the `Open and close editor (Vulkan)` step.

https://github.com/godotengine/godot/actions/runs/5366302204/jobs/9735786296#step:15:138
https://github.com/godotengine/godot/actions/runs/5389199469/jobs/9783070708?pr=78740#step:15:138

The failure doesn't seem related to either PR (in fact one of them is just a docs change). I have only seen this issue these two times, still probably worth looking into.

### Steps to reproduce

Open and close https://github.com/godotengine/regression-test-project/archive/4.0.zip using the Vulkan renderer.

### Minimal reproduction project

https://github.com/godotengine/regression-test-project/archive/4.0.zip
}
	VkResult err;
	uint32_t instance_layer_count;
	err = vkEnumerateInstanceLayerProperties(&instance_layer_count, nullptr);
	if (err) {
		ERR_FAIL_V(ERR_CANT_CREATE);
	}
	if (instance_layer_count < 1) {
		return OK;
	}
	VkLayerProperties *instance_layers = (VkLayerProperties *)malloc(sizeof(VkLayerProperties) * instance_layer_count);
	err = vkEnumerateInstanceLayerProperties(&instance_layer_count, instance_layers);
	if (err) {
		free(instance_layers);
		ERR_FAIL_V(ERR_CANT_CREATE);
	}
	for (const LocalVector<const char *> &layer : instance_validation_layers_alt) {
		if (_check_layers(layer.size(), layer.ptr(), instance_layer_count, instance_layers)) {
			*count = layer.size();
			if (names != nullptr) {
				*names = layer.ptr();
			}
			break;
		}
	}
	free(instance_layers);
	return OK;
}
typedef VkResult(VKAPI_PTR *_vkEnumerateInstanceVersion)(uint32_t *);
Error VulkanContext::_obtain_vulkan_version() {