相关疑难解决方法(0)

delete []"如何"知道操作数数组的大小?

Foo* set = new Foo[100];
// ...
delete [] set;
Run Code Online (Sandbox Code Playgroud)

您没有将数组的边界传递给delete[].但是这些信息存储在哪里?它是标准化的吗?

c++

235
推荐指数
5
解决办法
3万
查看次数

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

可能重复:
如何从C中的指针获取数组的大小?
有没有办法以编程方式确定C++数组的大小?如果没有,为什么?

我从C风格函数中获得了指向一大块已分配内存的指针.现在,调试目的非常有趣,以了解此指针指向的已分配内存块有多大.

是否有什么比通过盲目地越过边界而挑起异常更优雅?

提前谢谢,安德烈亚斯

编辑:

我在Windows上使用VC++ 2005,在Linux上使用GCC 4.3

EDIT2:

_msize在VC++ 2005下不幸的是它在调试模式下导致异常....

EDIT3:

好.我尝试过上面描述的方式,但有效.至少在我调试并确保在调用库退出后立即执行时,我会在缓冲区边界上运行.奇迹般有效.

它只是不优雅,绝不可用于生产代码.

c c++ malloc memory-management

11
推荐指数
4
解决办法
3万
查看次数

如何确定分配的C缓冲区的大小?

我有一个缓冲区,想要做一个测试,看看缓冲区是否有足够的容量,我可以找到我可以添加到缓冲区的元素数量.

char *buffer = (char *)malloc(sizeof(char) * 10);
Run Code Online (Sandbox Code Playgroud)

做一个

int numElements = sizeof(buffer); 
Run Code Online (Sandbox Code Playgroud)

不回10,有关如何实现这一点的任何想法?

c malloc buffer buffer-overflow

10
推荐指数
4
解决办法
5万
查看次数

为什么C中没有"memsize",它返回使用malloc在堆中分配的内存块的大小?

好.它可以在Visual Studio 中的_msize中调用.

但是为什么在使用malloc分配内存块的情况下,返回内存大小并不符合标准?因为我们无法判断malloc后面的返回指针指向了多少内存,所以我们可以使用这个"memsize"调用来返回我们需要的信息."memsize"将是特定于实现的,因为malloc/free

只是问,因为我必须在某个时候写一个包装器来存储大小的一些额外字节.

c memory-management

5
推荐指数
1
解决办法
3590
查看次数

是什么原因导致整数指针重新分配崩溃?

我是C的新手,我有这个问题.为什么以下代码崩溃:

int *a = 10;
*a = 100;
Run Code Online (Sandbox Code Playgroud)

c pointers

3
推荐指数
3
解决办法
604
查看次数

如何获取动态创建的内存的数组大小

考虑一个例子:

void main()
{
    int *arr;
    arr=new int[10];
}
Run Code Online (Sandbox Code Playgroud)

我怎么知道arr的大小?

c++ arrays

2
推荐指数
2
解决办法
5597
查看次数

标签 统计

c ×4

c++ ×3

malloc ×2

memory-management ×2

arrays ×1

buffer ×1

buffer-overflow ×1

pointers ×1