Problem usage memory in C

后端 未结 5 1226
说谎
说谎 2020-12-01 23:06

Please help :) OS : Linux

Where in \" sleep(1000);\", at this time \"top (display Linux tasks)\" wrote me 7.7 %MEM use. valgrind : not found memory leak.

I u

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-02 00:03

    Two problems:

    • In make_cache_db(), the line

      for (int i=0; i = n; i++)
      

      should probably read

      for (int i=0; i

      Otherwise, you'll only allocate a single cache_db_s node.

    • The way you're assigning cache_db in make_cache_db() seems to be buggy. It seems that your intention is to return a pointer to the first element of the linked list; but because you're reassigning cache_db in every iteration of the loop, you'll end up returning a pointer to the last element of the list.

      If you later free the list using free_cache_db(), this will cause you to leak memory. At the moment, though, this problem is masked by the bug described in the previous bullet point, which causes you to allocate lists of only length 1.

    Independent of these bugs, the point raised by aix is very valid: The runtime library need not return all free()d memory to the operating system.

提交回复
热议问题