【发布时间】:2019-01-24 16:21:17
【问题描述】:
假设我有一个我经常调用的函数,其中有一个数组:
char foo[LENGTH];
根据LENGTH 的值,每次调用函数时分配这可能会很昂贵。我见过:
static char foo[LENGTH];
所以它只分配一次并且始终使用该数组:https://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables
这是数组的最佳做法吗?
编辑:
我已经看到几个回答说静态本地人不是最好的。但是初始化成本呢?如果我打电话怎么办:
char foo[LENGTH] = "lorem ipsum";
不是每次调用函数时都要复制吗?
【问题讨论】:
-
对移动球门柱投反对票。
-
@Bathsheba 我的拉丁文是星期。可以翻译一下吗?
-
@JonathanMee 关于您的编辑,如果您想在函数中修改 foo ,则无论如何都必须手动重置它,否则它可能仍然具有上一次迭代的修改内容。我认为这是不可取的,因为如果它是可取的,您将不得不从一开始就使用 static 并且毫无疑问。如果您不想修改 foo ,则可以改用 const char * foo 。无论哪种情况,静态都无济于事。
-
请注意,您的编辑使已经提供的 4 个回答原始问题的答案无效。
-
不需要道歉。只需接受此问题的一个答案,还原您的更改并提出新的问题。
标签: c++ arrays variables static allocation