动态增加/减少arrays大小

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

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

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

没有C函数。 你可以去C ++容器。 这有arrays,列表等……

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

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