Skip to main content
Visitor II
May 6, 2024
Question

Memory leak in an example?

  • May 6, 2024
  • 3 replies
  • 1261 views

Just came across this in one of my pet projects.

https://support.touchgfx.com/docs/development/ui-development/ui-components/containers/list-layout

void Screen1View::setupScreen()
{
 Screen1ViewBase::setupScreen();
 //listLayout1.setWidthHeight(0, 0); // Remove excess space in List Layout
 for (int i=0; i < 3; i++)
 {
 TextArea *textArea = new TextArea();
 textArea->setWidthHeight(100, 25);
 textArea->setTypedText(touchgfx::TypedText(T_RESOURCEID1));
 listLayout1.add(*textArea);
 }
 listBackground.setWidthHeight(listLayout1);
}

Surely the fact that textArea pointer is not recorded anywhere indicates a memory leak.

Three dynamic allocations happen in the loop, and pointers are passed to listLayout1.add()

There is no way these three memory blocks can be de-allocated. The listLayout cleanup function could not possibly do the delete of added textArea objects, given it cannot assume blocks were dynamically (and not statically, or on stack) allocated. In fact I tried that (adding globally allocated textAreas to listLayout and no crash occurs so no surprise there).

And this leak will happen every time the screen is entered.

So correct code IMO would have been to store each pointer as a member of the class and delete in tearDownScreen

I understand this is only a little example but people may end up copying and pasting this stuff into their work...

3 replies

ST Employee
June 12, 2024

Hello @MichaelM ,

Thanks for your contribution, I will talk about it to the team.

Regards,

Tesla DeLorean
Guru
June 12, 2024

>>I understand this is only a little example but people may end up copying and pasting this stuff into their work...

Indeed, would probably be helpful to illustrate the constructor / destructor pairs for these things, and how to keep them in-sync, or keep track of the number instances they allocate rather than use constants / defines.

One might hope C++ coders are sufficiently aware that things need to be torn-down / unwound when done.

But a lot of Cargo-Cult and Chat GPT coders with relatively superficial understanding of such problems.

Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
ferro
Lead
June 13, 2024