This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Memory Pool (malloc/free) Free Space?

Quite simply, how can I tell how much free memory I have in a memory pool?

I've created a memory pool, initialized it with init_mempool and use malloc & free finctions for memory management.

Is there a simple way to find out how much memory is still available to be allocated?

I have a fairly dynamic application and I would like to insert some degugging triggers if memory gets low.

I thought of simply using malloc to request a block of say 200 bytes and then free it again. Could do this once a second and generate a low memory error if it fails. Seems a bit clunky, is there an easier way that I have missed??

Thanks,
Bryan Green.

Parents
  • The problem with what you're asking is that using memory allocation can cause fragmentation of the heap such that there is plenty of memory left but there is not a block big enough for what you need.

    The Keil free routine merges adjacent free blocks. But that may not be enough. If you have an application that consistently runs out of memory, you need a larger heap (or a different allocation strategy).

    Have you looked at the BOX functions?

    Jon

Reply
  • The problem with what you're asking is that using memory allocation can cause fragmentation of the heap such that there is plenty of memory left but there is not a block big enough for what you need.

    The Keil free routine merges adjacent free blocks. But that may not be enough. If you have an application that consistently runs out of memory, you need a larger heap (or a different allocation strategy).

    Have you looked at the BOX functions?

    Jon

Children