-foreign import ccall unsafe "malloc" _malloc :: CSize -> IO (Ptr a)
-foreign import ccall unsafe "realloc" _realloc :: Ptr a -> CSize -> IO (Ptr a)
-foreign import ccall unsafe "free" _free :: Ptr a -> IO ()
+foreign import ccall unsafe "stdlib.h malloc" _malloc :: CSize -> IO (Ptr a)
+foreign import ccall unsafe "stdlib.h realloc" _realloc :: Ptr a -> CSize -> IO (Ptr b)
+foreign import ccall unsafe "stdlib.h free" _free :: Ptr a -> IO ()
+#ifdef __HUGS__
+-- |A pointer to a foreign function equivalent to @free@, which may be used
+-- as a finalizer for storage allocated with @malloc@ or @mallocBytes@.
+foreign import ccall unsafe "stdlib.h &free"
+ finalizerFree :: FunPtr (Ptr a -> IO ())
+#endif