c++ - 会在动态中重复分配一个 char 数组导致问题吗?

标签 c++ dynamic-arrays dynamic-allocation

C++伪代码

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

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

会不会造成内存碎片?

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

最佳答案

你问,

“Would this lead to memory fragmentation?”

好吧,内存分配对于碎片化的发生是必要的,但这还不够

它取决于,取决于很多因素,包括分配模式和内存管理器。

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

但还是可以给出一些好的建议。

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

关于c++ - 会在动态中重复分配一个 char 数组导致问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179102/

相关文章:

c - 动态分配的二维数组运行时错误

c++ - 构造函数参数中没有名称的变量?

c++ - 将 int 存储为 ascii 代码的 vector

c++ - 退回 VLA 安全吗?

c - 如何在一个函数中动态分配二维数组并在另一个函数中打印它?

c++ - 分配初始化、对齐的内存

C#/C++ - 如何获取路径太长或权限被拒绝的目录的大小?

c++ - Codelite MinGW G++ 链接器错误

arrays - 在经典 ASP 中,如何获取动态数组内部是否有元素?

动态数组的 C memcpy 行为