Den 08-09-2016 kl. 12:55 skrev Konstantin Shegunov:

On Wed, Sep 7, 2016 at 11:23 PM, Mike Jackson <imikejack...@gmail.com
<mailto:imikejack...@gmail.com>> wrote:

    We monitor the memory use before and after the loop using OS X's
    Activity monitor. At the end of the loop there is more memory being
    used than before the loop, by about 2~3MB worth.

This isn't reliable. Consider the following C++ only code:

int main(intargc,char**argv)
{
  struct X;
  X * x = nullptr;

  struct X {
    int data[1024];
  };

  for(qint32i=0;i<100000;i++){
    x = new X[1024];
    delete x;
  }

  return 0;
}

In the KSysGuard (KDE's system monitor) I observe for the memory
consumption: 12 908k, 23 048k shared before the loop and 12 944k, 25
112k shared after the loop. There isn't a leak here, yet there's a
difference. The OS's heap manager may free the memory immediately, may
cache it, or hold on to it. Ultimately it's out of your control, that's
why you should use a code analyzer (like valgrind to track leaks).

You need to use "delete[] x;" or you can't say that you don't have a memory leak.

Bo Thorsen,
Director, Viking Software.

--
Viking Software
Qt and C++ developers for hire
http://www.vikingsoft.eu
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to