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 37fe80965876d3c85a34113efad2278cfb9f0502..4690dc6c886222b1a2dadd9cad9565deae4b4460 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>