是的,又是一个关于realloc和std::vector的问题。我知道你会说什么,我也同意,忘记手动内存分配,只需使用std::vector即可。不幸的是,我的教授禁止我在这个作业中使用STL中的任何东西。
所以,是的,我有一个动态数组T,我需要它可以调整大小,但我不能使用std::vector。我可以回到黑暗时代并用malloc等函数完成整个过程,但如果我能使用new就太棒了。
我已经阅读了很多帖子,每个人都说“不,你不能这样做,使用std::vector”,但它们都是在2011年8月之前发布的,我希望自C++11诞生以来可能发生了一些变化。所以告诉我,我有运气吗,还是必须恢复到C风格的内存分配?
所以,是的,我有一个动态数组T,我需要它可以调整大小,但我不能使用std::vector。我可以回到黑暗时代并用malloc等函数完成整个过程,但如果我能使用new就太棒了。
我已经阅读了很多帖子,每个人都说“不,你不能这样做,使用std::vector”,但它们都是在2011年8月之前发布的,我希望自C++11诞生以来可能发生了一些变化。所以告诉我,我有运气吗,还是必须恢复到C风格的内存分配?
std::vector
不在STL中,它属于C++标准库。 - user529758malloc
然后再复制,有时候确实是这样的,但如果有足够的空间,realloc
不会复制,它只会分配更多的空间。 - Michael Dorst