You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When calling begin() after the receive and transmit buffers have been allocated, the begin function orphans the allocations by resetting the pointer to nullptr, on the next call of allocateTxBuffer(), we get a new memory allocation while the previous one has never been freed, this in turns causes heap segmentation and will lead to lack of memory in the long run.
Yeah I agree, this is dummy code, but my philosophy is that Arduino should be dummy proof. This became an issue for me because I had locally scoped a sensor object(I know this was stupid...), destroying and creating it every time caused it to call begin and in turn cause the memory leak.
Describe the bug
When calling begin() after the receive and transmit buffers have been allocated, the begin function orphans the allocations by resetting the pointer to nullptr, on the next call of allocateTxBuffer(), we get a new memory allocation while the previous one has never been freed, this in turns causes heap segmentation and will lead to lack of memory in the long run.
Proposed fix in #2442
To Reproduce
Using this simplified code, we can see that the Wire receive buffer is reallocated every requestFrom call
Steps to reproduce the behavior:
Expected behavior
The wire library should not cause a memory leak, even if calling begin() multiple times is bad practice.
Board (please complete the following information):
Applicable to any stm32
The text was updated successfully, but these errors were encountered: