Fix a memory leak when creating Python3 modules. (#2019)

diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index d95d61f..8e9c55d 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -794,11 +794,16 @@
     explicit module(const char *name, const char *doc = nullptr) {
         if (!options::show_user_defined_docstrings()) doc = nullptr;
 #if PY_MAJOR_VERSION >= 3
-        PyModuleDef *def = new PyModuleDef();
+        PyModuleDef *def = PyMem_New(PyModuleDef, 1);
         std::memset(def, 0, sizeof(PyModuleDef));
         def->m_name = name;
         def->m_doc = doc;
         def->m_size = -1;
+        def->m_free = [](void* module ) {
+            if (module != nullptr) {
+                Py_XDECREF(PyModule_GetDef((PyObject*) module));
+            }
+        };
         Py_INCREF(def);
         m_ptr = PyModule_Create(def);
 #else