【发布时间】:2010-11-15 13:41:32
【问题描述】:
可能的重复:
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 风格的函数中获得了一个指向一块已分配内存的指针。 现在,出于调试目的了解如何 big 这个指针指向的分配的内存块是。
还有什么比盲目地越界引发异常更优雅的吗?
提前致谢, 安德烈亚斯
编辑:
我在 Windows 上使用 VC++2005,在 Linux 上使用 GCC 4.3
编辑2:
我在VC++2005下有_msize
不幸的是,它在调试模式下导致异常......
编辑3:
嗯。我已经尝试了我上面描述的方式,除了例外,它有效。 至少在我调试并确保在通话后立即 到图书馆出口,我跑过缓冲区边界。像魅力一样工作。
它只是不够优雅,也不能用于生产代码。
【问题讨论】:
-
那里没有有用的答案。
-
@AndreasT:你能详细说明一下吗?您在寻找什么,但在这些问题中的一个或另一个上没有得到回答(stackoverflow.com/questions/232691/array-size-from-pointer-in-c 似乎与您在此处提出的问题特别接近)。现在,这似乎是重复的 - 如果你能澄清你想要做什么,也许我们可以找到更匹配的答案......
-
在你提到的网站上,搜索没有向我建议,它是第三个答案,而不是接受的一个,它提供了这个信息:msize() 或类似的函数 (_msize()等等)。我不是在搜索数组的大小,我想知道在给定位置分配了多少字节内存。这当然或多或少是相同的问题,因为特别是在 C 中,您分配数组和大内存块的方式相同。但我不需要知道可能附加了一些大小信息的数组。我需要分配的内存块的大小。
-
C 语言的相似性对我来说并不明显。
标签: c++ c memory-management malloc