+
+/** strnewdup() is an implemenetation of strdup() which calls operator new
+ * rather than malloc to allocate the new string, therefore allowing it to
+ * be hooked into the C++ memory manager, and freed with operator delete.
+ * This is required for windows, where we override operators new and delete
+ * to allow for global allocation between modules and the core.
+ */