Possible Duplicates:
How can I get the size of an array from a pointer in C?
Is there any way to determine the size of a C++ array programmatically? And if not, why?
我从 C 风格的函数中获得了一个指向一 block 已分配内存的指针。 现在,出于调试目的了解如何 big 这个指针指向的分配的内存块是。
还有什么比盲目地越界引发异常更优雅的吗?
提前致谢, 安德烈亚斯
编辑:
我在 Windows 上使用 VC++2005,在 Linux 上使用 GCC 4.3
编辑2:
我在VC++2005下有_msize
不幸的是,它在 Debug模式下导致异常......
编辑3:
嗯。我已经尝试了我上面描述的方式,除了异常(exception),它有效。 至少在我调试并确保在通话后立即 到图书馆导出,我跑过缓冲区边界。像魅力一样工作。
它只是不够优雅,也不能用于生产代码。
最佳答案
这不是标准的,但如果你的库有一个 msize()
函数,它会给你大小。
一个常见的解决方案是使用您自己的函数包装 malloc
,该函数会记录每个请求以及大小和生成的内存范围,在发布版本中,您可以切换回“真实” malloc
.
关于c++ - 如何获取使用 malloc() 分配的内存块的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1208644/