Determine size of dynamically allocated memory in C

后端 未结 15 2298
孤街浪徒
孤街浪徒 2020-11-22 06:15

Is there a way in C to find out the size of dynamically allocated memory?

For example, after

char* p = malloc (100);

Is there

相关标签:
15条回答
  • 2020-11-22 07:02

    I would expect this to be implementation dependent.
    If you got the header data structure, you could cast it back on the pointer and get the size.

    0 讨论(0)
  • 2020-11-22 07:02

    Note: using _msize only works for memory allocated with calloc, malloc, etc. As stated on the Microsoft Documentation

    The _msize function returns the size, in bytes, of the memory block allocated by a call to calloc, malloc, or realloc.

    And will throw an exception otherwise.

    https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/msize?view=vs-2019

    0 讨论(0)
  • 2020-11-22 07:07

    There is no standard way to find this information. However, some implementations provide functions like msize to do this. For example:

    • _msize on Windows
    • malloc_size on MacOS
    • malloc_usable_size on systems with glibc

    Keep in mind though, that malloc will allocate a minimum of the size requested, so you should check if msize variant for your implementation actually returns the size of the object or the memory actually allocated on the heap.

    0 讨论(0)
提交回复
热议问题