【发布时间】:2020-12-04 01:59:42
【问题描述】:
这里,在this question 中,声明在c++ 中没有类似realloc 的运算符或函数。如果您想调整数组大小,只需 std::vector 即可。我什至看到 Stroustrup 说过同样的话here。
我相信实施一个并不难。应该有不实施的理由。答案只说使用std::vector,但没有说为什么没有实现。
没有实现realloc-like 运算符或函数而是更喜欢使用std::vector 的原因是什么?
【问题讨论】:
-
vector随时可用、功能齐全且经过良好测试。为什么要重新发明轮子? -
这能回答你的问题吗? How do you 'realloc' in C++?
-
“我相信实现一个并不难。” — 在重新分配期间,您将如何处理 non-trivially-copyable 类型?跨度>
-
@StackExchange123 为什么要这样复制
std::vector的功能?请注意,这并不像您写的那么容易。您需要关心异常安全,类型可以具有复制/非抛出移动/抛出移动构造函数,您需要分别处理这些情况,等等。 -
@d4rk4ng31 -- 我不知道你所说的“微不足道”的内存块是什么意思。在这一切之下,它只是原始内存,
realloc有时可以扩展内存块,而new和delete永远不能。有几次建议添加一个renew运算符,它可以做同样的事情:如果他们的房间在适当的位置扩展一个内存块,然后初始化占用新添加内存的对象。
标签: c++ vector dynamic-memory-allocation realloc