Skip to content

Commit 617fdf0

Browse files
committed
Use placement new for ETSTimer - no heap fragmentation, new/delete semantics unchanged.
1 parent 455583b commit 617fdf0

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

libraries/Ticker/Ticker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ void Ticker::_attach_ms(uint32_t milliseconds, bool repeat, callback_with_arg_t
5050
}
5151
else
5252
{
53-
_timer = new ETSTimer;
53+
_timer = new(_etsTimerMemory) ETSTimer;
5454
}
5555

5656
os_timer_setfn(_timer, reinterpret_cast<ETSTimerFunc*>(callback), reinterpret_cast<void*>(arg));
@@ -63,7 +63,7 @@ void Ticker::detach()
6363
return;
6464

6565
os_timer_disarm(_timer);
66-
delete _timer;
66+
_timer->~ETSTimer();
6767
_timer = nullptr;
6868
_callback_function = nullptr;
6969
}

libraries/Ticker/Ticker.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class Ticker
129129

130130
protected:
131131
ETSTimer* _timer;
132+
char _etsTimerMemory[sizeof(ETSTimer)];
132133
callback_function_t _callback_function = nullptr;
133134
};
134135

0 commit comments

Comments
 (0)