Add basic C++ new/delete operators, as contributed by @mikejac in #24

This commit is contained in:
Angus Gratton 2015-08-13 08:32:34 +10:00
parent 424dc0f3b0
commit 7d480876fa
2 changed files with 41 additions and 4 deletions

View file

@ -0,0 +1,25 @@
/* Part of esp-open-rtos
* BSD Licensed as described in the file LICENSE
*/
#include <stdio.h>
#include <stdlib.h>
void *operator new(size_t size)
{
return malloc(size);
}
void *operator new[](size_t size)
{
return malloc(size);
}
void operator delete(void * ptr)
{
free(ptr);
}
void operator delete[](void * ptr)
{
free(ptr);
}

View file

@ -35,11 +35,23 @@ static Counter static_counter(99);
void task1(void *pvParameters)
{
Counter local_counter = Counter(12);
Counter *new_counter = new Counter(24);
while(1) {
Counter &counter = rand() % 2 ? static_counter : local_counter;
counter.Increment();
printf("local counter %ld static counter %ld\r\n", local_counter.getCount(),
static_counter.getCount());
Counter *counter = NULL;
switch(rand() % 3) {
case 0:
counter = &local_counter;
break;
case 1:
counter = &static_counter;
break;
default:
counter = new_counter;
break;
}
counter->Increment();
printf("local counter %ld static counter %ld newly allocated counter %ld\r\n", local_counter.getCount(),
static_counter.getCount(), new_counter->getCount());
vTaskDelay(100);
}
}