-#else /* non __GNUC__ */
-# define xbt_strdup(s) strdup(s)
-# define xbt_malloc(n) malloc(n)
-# define xbt_malloc0(n) calloc(n,1)
-# define xbt_realloc(p,s) realloc(p,s)
-#endif /* __GNUC__ ? */
-
-/** @brief like free
- @hideinitializer */
-#define xbt_free free /*nothing specific to do here. A poor valgrind replacement?*/
-/*#define xbt_free_fct free * replacement with the guareenty of being a function FIXME:KILLME*/
+
+/** @brief like free */
+#define xbt_free(p) free(p) /*nothing specific to do here. A poor valgrind replacement? */
+
+#ifdef __cplusplus
+#define XBT_FREE_NOEXCEPT noexcept(noexcept(::free))
+#else
+#define XBT_FREE_NOEXCEPT
+#endif