【问题标题】:Would repeatedly allocate a char array in dynamic lead to problems?在动态中重复分配一个 char 数组会导致问题吗?
【发布时间】:2012-12-20 04:30:28
【问题描述】:

C++ 中的伪代码

char* data = new char[determine_size()];
// ... do some stuff with data
delete[] data;
// ... repeat process

所以基本上,数据每次都被重复分配到一个不同大小的新数组中。虽然每次之前的分配总是首先被取消分配。

这会导致内存碎片吗?

我对 C++ 中的内存管理不是很熟悉;我的直觉告诉我这不是一个好主意。

【问题讨论】:

  • 视情况而定。在这些数据的分配和删除之间,您是否进行了其他分配?

标签: c++ dynamic-arrays dynamic-allocation


【解决方案1】:

你问,

“这会导致内存碎片吗?”

内存分配对于发生碎片是必要的,但它还不够足够

这取决于很多事情,包括分配模式和内存管理器。

如前所述,这个问题确实无法回答。

但仍然可以给出一些好的建议。

不要使用原始数组和new,而是使用例如std::vectorstd::string

【讨论】:

    猜你喜欢
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 2022-01-06
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多