会不会在动态中反复分配一个char数组导致问题?

ain*_*ins 0 c++ dynamic-arrays dynamic-allocation

C++中的伪代码

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

所以基本上,每次都会将数据重复分配给具有不同大小的新数组.虽然每次先前的分配总是先取消分配.

这会导致内存碎片吗?

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

Che*_*Alf 6

你问,

"这会导致内存碎片吗?"

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

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

如上所述,这个问题真的无法回答.

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

不要使用原始数组new,而是使用eg std::vectorstd::string.