c++ - 如何获取使用 malloc() 分配的内存块的大小?

标签 c++ c memory-management malloc

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/

相关文章:

c - 内存泄漏使用 malloc 失败

c - 欧拉问题 3 - 我需要这个小 C 语言的帮助

c++ - WSL 中 QT 的动态链接不起作用但在 docker 容器中工作

c++ - 如何有效地用另一个 std::string 的迭代值替换 std::string 中的字符?

c++ - Boost ASIO - 如何编写控制台服务器 2

c++ - mysql和c++连接

c++ - 清理 RAM(也许是 win32 api)?

javascript - 跟踪javascript中的内存使用情况

c# - 如何在 C# 中释放在 C++ 中分配的内存

c - 为内存管理牺牲意图表达