动态增加/减少数组大小

时间:2013-05-22 10:50:02

标签: c arrays size append

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

4 个答案:

答案 0 :(得分:5)

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

虽然正如你提到的C ++,你也可以选择像std::vector这样的标准容器来封装相关的内存管理。

答案 1 :(得分:0)

没有C功能。你可以去C ++容器。这有阵列,列表等...

答案 2 :(得分:0)

可能你可以通过编写自己的内存管理包装器来实现这一目的,从分配的数组中追加/释放内存块。

答案 3 :(得分:0)

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