diff --git a/py/builtinimport.c b/py/builtinimport.c
index 323b63ef61d14a80438fde978dff8d190267e250..f4e089b5d8675ff5133420b35ffaa478dcbfe5a8 100644
--- a/py/builtinimport.c
+++ b/py/builtinimport.c
@@ -1,12 +1,8 @@
 #include <stdint.h>
-#include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <assert.h>
-#ifdef __MINGW32__
-// For alloca()
-#include <malloc.h>
-#endif
+#include <alloca.h>
 
 #include "mpconfig.h"
 #include "nlr.h"
diff --git a/py/objfun.c b/py/objfun.c
index e0c25771e10e713f043efe9290a9619bda265c3f..2855c7452b2f849b2babd4f5a2ebba09b29b9a43 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -1,11 +1,7 @@
 #include <stdbool.h>
-#include <stdlib.h>
 #include <string.h>
 #include <assert.h>
-#ifdef __MINGW32__
-// For alloca()
-#include <malloc.h>
-#endif
+#include <alloca.h>
 
 #include "mpconfig.h"
 #include "nlr.h"
diff --git a/windows/alloca.h b/windows/alloca.h
new file mode 100644
index 0000000000000000000000000000000000000000..f8fa6f17a006ac64235b82b99933dbe5a312e6a2
--- /dev/null
+++ b/windows/alloca.h
@@ -0,0 +1 @@
+#include <malloc.h>