#include #include #include // Define the 'new' operator for C++ to use the freeRTOS memory management // functions. THIS IS NOT OPTIONAL! // #define USE_FREERTOS void *operator new(size_t size){ void *p; #ifdef USE_FREERTOS if(1 || uxTaskGetNumberOfTasks()) p=pvPortMalloc(size); else p=malloc(size); #else p=malloc(size); #endif #ifdef __EXCEPTIONS if (p==0) // did pvPortMalloc succeed? throw std::bad_alloc(); // ANSI/ISO compliant behavior #endif return p; } // // Define the 'delete' operator for C++ to use the freeRTOS memory management // functions. THIS IS NOT OPTIONAL! // void operator delete(void *p){ #ifdef USE_FREERTOS if(1 || uxTaskGetNumberOfTasks()) vPortFree( p ); else free( p ); #else free( p ); #endif p = NULL; } void *operator new[](size_t size){ void *p; #ifdef USE_FREERTOS if(1 || uxTaskGetNumberOfTasks()) p=pvPortMalloc(size); else p=malloc(size); #else p=malloc(size); #endif #ifdef __EXCEPTIONS if (p==0) // did pvPortMalloc succeed? throw std::bad_alloc(); // ANSI/ISO compliant behavior #endif return p; } // Define the 'delete' operator for C++ to use the freeRTOS memory management // functions. THIS IS NOT OPTIONAL! // void operator delete[](void *p){ #ifdef USE_FREERTOS if(1 || uxTaskGetNumberOfTasks()) vPortFree( p ); else free( p ); #else free( p ); #endif p = NULL; } /* Optionally you can override the 'nothrow' versions as well. This is useful if you want to catch failed allocs with your own debug code, or keep track of heap usage for example, rather than just eliminate exceptions. */ // // //void* operator new(std::size_t size, const std::nothrowt&) { // return malloc(size); //} // // // //void* operator new { // return malloc(size); //} // // // //void operator delete(void* ptr, const std::nothrow_t&) { // free(ptr); //} // // // //void operator delete { // free(ptr); //} //