5

我正在尝试动态增加数组的大小。是否有任何标准的 C 或 C++ 函数在数组末尾附加额外的空间或删除它?我知道,这很困难,因为不能保证堆的末端有足够的空间。但这不应该是操作系统的工作吗?

4

4 回答 4

5

您正在寻找的函数realloc()在 C 中,它也存在于 C++ STL 中std::realloc

尽管正如您提到的 C++,您也可以选择一个标准容器std::vector,例如封装相关的内存管理。

于 2013-05-22T10:54:32.460 回答
0

没有这样的 C 函数。你可以去 C++ 容器。这有数组,列表等......

于 2013-05-22T10:57:45.193 回答
0

可能您可以通过编写自己的内存管理包装器来实现这一点,这种方式可以从分配的数组中附加/释放内存块。

于 2013-05-22T11:31:45.750 回答
0

经过教授和工程师等人(在几年内从事实际工作)的大量实验后,在扩展阵列时,将其扩展 50%,除非您有内部信息告诉您不同。realloc() 也为您完成了所有繁重的工作(接下来解释。)来自互联网:-->realloc() 函数将 ptr 指向的内存块的大小更改为 size 字节。内容将在从区域开始到新旧大小的最小值的范围内保持不变。如果新大小大于旧大小,则不会初始化添加的内存。如果 ptr 为 NULL,则对于所有 size 值,调用等效于 malloc(size);如果 size 等于 0,并且 ptr 不为 NULL,则调用等效于 free(ptr)。除非 ptr 为 NULL,否则它一定是由先前对 malloc()、calloc() 或 realloc() 的调用返回的。如果指向的区域被移动,则执行 free(ptr)。

于 2014-10-15T08:47:22.537 回答