malloc memory not free all

Issue #383 invalid
Former user created an issue

Originally reported on Google Code with ID 383

What steps will reproduce the problem?
1. make a application at windows, just like VC 6.0
2. call testfloatnum.c main() function
3. check the VC output at debug mode
4. find "Detected memory leaks!" in output



What is the expected output? What do you see instead?
free all malloc memory.

What version of the product are you using? On what operating system?
current 

Please provide any additional information below.

I find the problem at the "bc_free_num()" function
as the link free, but not all the ensum part not free all!

thanks !

Reported by ourcabin@163.com on 2011-07-13 03:01:19

Comments (4)

  1. Former user Account Deleted

    ``` void bc_free_num (bc_num *num) { if (*num == NULL) return;

    (*num)->n_refs--; if ((*num)->n_refs == 0) { if ((*num)->n_ptr) free ((*num)->n_ptr);

    (*num)->n_next = _bc_Free_list; _bc_Free_list = *num; }

    • num = NULL; }

    AT: *num = NULL, BUT NOT FREE "free ((*num)->n_ptr);"

    ```

    Reported by `ourcabin@163.com` on 2011-07-13 03:06:01

  2. Former user Account Deleted

    ``` Detected memory leaks! Dumping objects -> {473} normal block at 0x00499EC0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {472} normal block at 0x00499F10, 8 bytes long. Data: < > 00 00 00 00 FF FF FF 7F {470} normal block at 0x00499F50, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {469} normal block at 0x00499FA0, 8 bytes long. Data: < > 00 00 00 00 FF FF FF 7F {464} normal block at 0x004980D0, 8 bytes long. Data: < > 00 00 00 00 FF FF FF 7F {453} normal block at 0x00498190, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {451} normal block at 0x00498210, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 09 00 00 00 00 00 00 00 {449} normal block at 0x00498290, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {447} normal block at 0x00498350, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {445} normal block at 0x004983D0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {443} normal block at 0x00498490, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {441} normal block at 0x00498510, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {439} normal block at 0x004985D0, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {437} normal block at 0x00498650, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {435} normal block at 0x00498710, 28 bytes long. Data: < @ > 00 00 00 00 01 00 00 00 40 00 00 00 00 00 00 00 {433} normal block at 0x00498790, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {431} normal block at 0x00498850, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {429} normal block at 0x004988D0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {427} normal block at 0x00498990, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {425} normal block at 0x00498A10, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {423} normal block at 0x00498AD0, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {421} normal block at 0x00498B50, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {419} normal block at 0x00498C10, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {417} normal block at 0x00498C90, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {415} normal block at 0x00498D50, 28 bytes long. Data: < @ > 01 00 00 00 01 00 00 00 40 00 00 00 00 00 00 00 {413} normal block at 0x00498DD0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {411} normal block at 0x00498E90, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {409} normal block at 0x00498F10, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {407} normal block at 0x00498FD0, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {405} normal block at 0x00497070, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {403} normal block at 0x00497130, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {401} normal block at 0x004971B0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {399} normal block at 0x00497270, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {397} normal block at 0x004972F0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {395} normal block at 0x004973B0, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {393} normal block at 0x00497430, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {391} normal block at 0x004974F0, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {389} normal block at 0x00497570, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {387} normal block at 0x00497630, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {385} normal block at 0x004976B0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {383} normal block at 0x00497770, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {381} normal block at 0x004977F0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {379} normal block at 0x004978B0, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {377} normal block at 0x00497930, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {375} normal block at 0x004979F0, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {373} normal block at 0x00497A70, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {371} normal block at 0x00497B30, 28 bytes long. Data: < A > 00 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {369} normal block at 0x00497BB0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {367} normal block at 0x00497C70, 28 bytes long. Data: < A > 01 00 00 00 01 00 00 00 41 00 00 00 00 00 00 00 {365} normal block at 0x00497CF0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {363} normal block at 0x00497DC0, 28 bytes long. Data: < H > 00 00 00 00 01 00 00 00 48 00 00 00 00 00 00 00 {361} normal block at 0x00497E40, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {359} normal block at 0x00497F10, 28 bytes long. Data: < H > 00 00 00 00 01 00 00 00 48 00 00 00 00 00 00 00 {357} normal block at 0x00496040, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 {355} normal block at 0x00496090, 28 bytes long. Data: < H > 00 00 00 00 01 00 00 00 48 00 00 00 00 00 00 00 {353} normal block at 0x00496120, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {351} normal block at 0x004961F0, 28 bytes long. Data: < E > 00 00 00 00 01 00 00 00 45 00 00 00 00 00 00 00 {349} normal block at 0x00496270, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {347} normal block at 0x00496330, 28 bytes long. Data: < > > 00 00 00 00 01 00 00 00 3E 00 00 00 00 00 00 00 {345} normal block at 0x004963C0, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 {343} normal block at 0x00496480, 28 bytes long. Data: < B > 00 00 00 00 01 00 00 00 42 00 00 00 00 00 00 00 {341} normal block at 0x00496500, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {339} normal block at 0x004965C0, 28 bytes long. Data: < < > 00 00 00 00 01 00 00 00 3C 00 00 00 00 00 00 00 {337} normal block at 0x00496650, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 {335} normal block at 0x00496710, 28 bytes long. Data: < < > 00 00 00 00 01 00 00 00 3C 00 00 00 00 00 00 00 {333} normal block at 0x004967A0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {331} normal block at 0x00496860, 28 bytes long. Data: < 8 > 00 00 00 00 01 00 00 00 38 00 00 00 00 00 00 00 {329} normal block at 0x004968E0, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {327} normal block at 0x004969A0, 28 bytes long. Data: < 4 > 00 00 00 00 01 00 00 00 34 00 00 00 00 00 00 00 {325} normal block at 0x00496A20, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {323} normal block at 0x00496AD0, 28 bytes long. Data: < 1 > 00 00 00 00 01 00 00 00 31 00 00 00 00 00 00 00 {321} normal block at 0x00496B60, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 07 00 00 00 00 00 00 00 {319} normal block at 0x00496C20, 28 bytes long. Data: < 6 > 00 00 00 00 01 00 00 00 36 00 00 00 00 00 00 00 {317} normal block at 0x00496CB0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {315} normal block at 0x00496D60, 28 bytes long. Data: < 0 > 00 00 00 00 01 00 00 00 30 00 00 00 00 00 00 00 {313} normal block at 0x00496DE0, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {311} normal block at 0x00496E90, 28 bytes long. Data: < + > 00 00 00 00 01 00 00 00 2B 00 00 00 00 00 00 00 {309} normal block at 0x00496F20, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 {307} normal block at 0x00496FD0, 28 bytes long. Data: < - > 00 00 00 00 01 00 00 00 2D 00 00 00 00 00 00 00 {305} normal block at 0x00495080, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {303} normal block at 0x00495130, 28 bytes long. Data: < ) > 00 00 00 00 01 00 00 00 29 00 00 00 00 00 00 00 {301} normal block at 0x004951B0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {299} normal block at 0x00495260, 28 bytes long. Data: < % > 00 00 00 00 01 00 00 00 25 00 00 00 00 00 00 00 {297} normal block at 0x004952F0, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 {295} normal block at 0x004953A0, 28 bytes long. Data: < * > 00 00 00 00 01 00 00 00 2A 00 00 00 00 00 00 00 {293} normal block at 0x00495420, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {291} normal block at 0x004954C0, 28 bytes long. Data: < " > 00 00 00 00 01 00 00 00 22 00 00 00 00 00 00 00 {289} normal block at 0x00495540, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {287} normal block at 0x004955E0, 28 bytes long. Data: < ! > 00 00 00 00 01 00 00 00 21 00 00 00 00 00 00 00 {285} normal block at 0x00495660, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {283} normal block at 0x00495700, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 1F 00 00 00 00 00 00 00 {281} normal block at 0x00495780, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {279} normal block at 0x00495820, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 1D 00 00 00 00 00 00 00 {277} normal block at 0x004958A0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {275} normal block at 0x00495940, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 1A 00 00 00 00 00 00 00 {273} normal block at 0x004959D0, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {271} normal block at 0x00495A70, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 1B 00 00 00 00 00 00 00 {269} normal block at 0x00495AF0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {267} normal block at 0x00495B90, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 17 00 00 00 00 00 00 00 {265} normal block at 0x00495C10, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {263} normal block at 0x00495CB0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 16 00 00 00 00 00 00 00 {261} normal block at 0x00495D40, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {259} normal block at 0x00495DE0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 15 00 00 00 00 00 00 00 {257} normal block at 0x00495E70, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {255} normal block at 0x00495F10, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 14 00 00 00 00 00 00 00 {253} normal block at 0x00495F90, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {251} normal block at 0x00494040, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 0F 00 00 00 00 00 00 00 {249} normal block at 0x004940D0, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 {247} normal block at 0x00494170, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 13 00 00 00 00 00 00 00 {245} normal block at 0x004941F0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {243} normal block at 0x00494280, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 0C 00 00 00 00 00 00 00 {241} normal block at 0x00494300, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {239} normal block at 0x00494390, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 0C 00 00 00 00 00 00 00 {237} normal block at 0x00494420, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 {235} normal block at 0x004944B0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 0C 00 00 00 00 00 00 00 {233} normal block at 0x00494530, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {231} normal block at 0x004945C0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 0A 00 00 00 00 00 00 00 {229} normal block at 0x00494640, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {227} normal block at 0x004946D0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 {225} normal block at 0x00494750, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {223} normal block at 0x004947E0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 08 00 00 00 00 00 00 00 {221} normal block at 0x00494860, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {219} normal block at 0x004948F0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 {217} normal block at 0x00494970, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {215} normal block at 0x00494A00, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 {213} normal block at 0x00494A80, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 {211} normal block at 0x00494B10, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 {209} normal block at 0x00494B90, 28 bytes long. Data: < > 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 {207} normal block at 0x00494C20, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 {205} normal block at 0x00494CA0, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 {203} normal block at 0x00494D20, 28 bytes long. Data: < > 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ```

    Reported by `ourcabin@163.com` on 2011-07-13 03:09:28

  3. Former user Account Deleted
    This refers to the function bc_free_num in number.c which is 3rd party from the GNU
    bc project. It is easily verifiable with valgrind that there are no memory leaks. Numbers
    are ref counted, meaning they will be freed only when ref == 0.
    

    Reported by helder.pereira.correia on 2013-03-24 06:10:07 - Status changed: Rejected

  4. Log in to comment