【发布时间】:2021-10-29 20:32:41
【问题描述】:
我正在开发一个无法使用动态分配的系统。
我想要一个稍后填充的字符串数组。
据我了解,使用
string myArr[20];
不行,我什么时候打电话
myArr[5] = newString
复制构造函数将动态分配新内存,因为初始长度为零。
有可能吗?
【问题讨论】:
-
可以使用一些静态字符串实现,比如
static_stringfrom Boost。 -
不可能静态分配 a std::string。句号。为此,您必须使用 char 数组。
-
@user253751 IIRC,
std::string内部分配有operator new(通过std::allocator<char>),可以由用户替换。理论上,因此可以拥有一些静态分配的内存池并将其用于std::string,而无需堆动态内存分配。我根本不会推荐它,只是说它应该是可能的。 -
@DanielLangr 仍然是动态分配
-
@user253751 是的,我同意,但我想这可以满足 OP 的要求。