Foo* set = new Foo[100];
// ...
delete [] set;
Run Code Online (Sandbox Code Playgroud)
您没有将数组的边界传递给delete[].但是这些信息存储在哪里?它是标准化的吗?
我从C风格函数中获得了指向一大块已分配内存的指针.现在,调试目的非常有趣,以了解此指针指向的已分配内存块有多大.
是否有什么比通过盲目地越过边界而挑起异常更优雅?
提前谢谢,安德烈亚斯
我在Windows上使用VC++ 2005,在Linux上使用GCC 4.3
我_msize在VC++ 2005下不幸的是它在调试模式下导致异常....
好.我尝试过上面描述的方式,但有效.至少在我调试并确保在调用库退出后立即执行时,我会在缓冲区边界上运行.奇迹般有效.
它只是不优雅,绝不可用于生产代码.
我有一个缓冲区,想要做一个测试,看看缓冲区是否有足够的容量,我可以找到我可以添加到缓冲区的元素数量.
char *buffer = (char *)malloc(sizeof(char) * 10);
Run Code Online (Sandbox Code Playgroud)
做一个
int numElements = sizeof(buffer);
Run Code Online (Sandbox Code Playgroud)
不回10,有关如何实现这一点的任何想法?
考虑一个例子:
void main()
{
int *arr;
arr=new int[10];
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道arr的大小?