我想动态增加数组的大小。是否有任何标准的C或C++函数,它在数组的末尾添加额外的空间或将其删除? 我知道,这很难,因为它不能保证在堆的最后有足够的空间。但是,这不应该是操作系统的工作吗?动态增加/减少数组大小
回答
你要找的功能是在C,这也是目前在C++ STL为std::realloc
虽然你提到C++ realloc()
,你也可以去像std::vector
一个标准的容器,它封装了相关内存管理。
它不会减小尺寸,是吗?** –
好吧,如果我输入比以前更小的尺寸,它确实会减少。或者这是不可能的? –
@GrijeshChauhan您可以指定一个小于数组的旧大小的新大小。 C标准规定(7.20.3.4)'realloc()'“重新分配由ptr指向的旧对象,并返回一个指向size为size指定大小的新对象的指针,并且新对象的内容是一直到min(oldSize,newSize)。 – JBL
这里没有C函数。你可以去C++容器。这有阵列,列表等...
可能你可以通过编写你自己的内存管理包装这样的方式来实现这个从分配的数组追加/释放内存块的方式。
经过诸如教授和工程师(有几年真实工作经验的人)的大量实验后,扩展数组时,除非你有内部信息告诉你不同,否则将其扩大50%。 realloc()为你也做了所有重载(解释见下)。从因特网: - > realloc()函数将ptr指向的内存块的大小更改为字节大小。内容在从区域开始到新旧尺寸的最小范围内保持不变。如果新尺寸大于旧尺寸,则添加的内存不会被初始化。如果ptr为NULL,则对于所有大小的值,调用等价于malloc(size);如果size等于零,并且ptr不为NULL,那么调用等价于free(ptr)。除非ptr为NULL,否则它必须早先通过调用malloc(),calloc()或realloc()返回。如果指向的区域被移动,则完成一个空闲(ptr)。
- 1. 如何动态增加数组大小
- 2. 用C#动态增加/减少数字
- 3. 增加/减少图像大小,网站
- 4. MPMusicPlayerController音量增加和减少动态
- 5. 增加/减少大量整数
- 6. 动画UILabel文本大小增加和减少
- 7. 拖动增加/减少值
- 8. 增加数据包大小时RTT减少
- 9. 减少和增加浮动增量android
- 10. GWT - 增加和减小字体大小
- 11. 试图动态增加数组的大小
- 12. 如何动态增加C#中固定数组的大小?
- 13. 动态增加结构“C”数组大小
- 14. 减少TimePicker大小
- 15. 如何在asp.net中增加或减少btn点击的大小?
- 16. 减少图像尺寸增加文件大小C#
- 17. 为JDK7和JRuby减少弹药大小(或增加限制)
- 18. 使用JButton增加/减少textArea内的字体大小
- 19. 如何在asp.net中增加或减少btn点击的大小?
- 20. 如何增加或减少ImageView的大小?
- 21. PDF文字字体大小增加减少
- 22. 如何增加/减少点击事件窗口大小?
- 23. 增加和减少html标签的字体大小
- 24. 如何增加或减少Java中矩阵的大小?
- 25. 增加/减少/重置字体大小不起作用
- 26. Javascript来增加/减少字体大小(外部CSS)
- 27. 动态增加内容大小
- 28. 动态增加textview的大小
- 29. Java动态数组大小?
- 30. 动态大小数组?
['void * realloc(void * ptr,size_t size);'](http://www.cplusplus.com/reference/cstdlib/realloc/)在C中的功能 –
您需要下定决心你在用什么语言进行编程。在C中,你会使用'realloc'。在C++中,你会使用'std :: vector'。 –