memmory corruption

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • mohi

    memmory corruption

    hello everyone ,
    is there any cmmnd in gdb or any other way to find out whats the total
    dynamically allocated memory
    a process holds at various instances of execution???

    and what can be the possible reasons of an error like

    glibc detected:malloc () memory corruption

    when the program executes almost the same function abt 2000 times with
    no error
    it does use dynamically alloted space and free it at every function
    call


    thank you very much

  • Victor Bazarov

    #2
    Re: memmory corruption

    mohi wrote:
    hello everyone ,
    is there any cmmnd in gdb or any other way to find out whats the total
    dynamically allocated memory
    a process holds at various instances of execution???
    What hppnd to your vowels? Never mind.

    GDB is off-topic. Try 'gnu.*' hierarchy, or the newsgroup for your OS,
    which I strongly recommend because that forum will deal with tools much
    better than c.l.c++, since tools are almost always platform- and OS-
    specific.
    and what can be the possible reasons of an error like
    >
    glibc detected:malloc () memory corruption
    Buffer overrun, double deletion of memory, attempt to use dynamic memory
    after it has been deleted, allocation using 'new[]' then deletion using
    'delete' instead of 'delete[]'...
    when the program executes almost the same function abt 2000 times with
    no error
    it does use dynamically alloted space and free it at every function
    call
    If you are sure allocations and deallocations are correctly paired up,
    then it probably isn't that particular function...

    V
    --
    Please remove capital 'A's when replying by e-mail
    I do not respond to top-posted replies, please don't ask

    Comment

    • James Kanze

      #3
      Re: memmory corruption

      On Jul 25, 7:15 pm, Victor Bazarov <v.Abaza...@com Acast.netwrote:
      mohi wrote:
      [...]
      glibc detected:malloc () memory corruption
      Buffer overrun, double deletion of memory, attempt to use
      dynamic memory after it has been deleted, allocation using
      'new[]' then deletion using 'delete' instead of 'delete[]'...
      Just about any undefined behavior could in theory cause it.
      Using an uninitialized pointer, for example.
      when the program executes almost the same function abt 2000
      times with no error it does use dynamically alloted space
      and free it at every function call
      If you are sure allocations and deallocations are correctly
      paired up, then it probably isn't that particular function...
      Back in the old days (in C), about 50% of the time, this was
      caused by someone allocating strlen(s) bytes, then using strcpy
      to copy into the allocated memory. I you're using C++
      correctly (std::string, std::vector, etc.), those sort of
      problems should be close to non-existant, but if he's got an
      array new anywhere, it's a likely candidate. Another
      possibility is that something didn't get recompiled when a
      header was modified. So the size of a class changes, but the
      operator new uses the old size.

      --
      James Kanze (GABI Software) email:james.kan ze@gmail.com
      Conseils en informatique orientée objet/
      Beratung in objektorientier ter Datenverarbeitu ng
      9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

      Comment

      Working...