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