【发布时间】:2011-05-20 16:40:08
【问题描述】:
我知道 C/C++ 中的字符串文字具有静态存储持续时间,这意味着它们“永远”存在,即只要程序运行。
因此,如果我有一个函数被非常频繁地调用并使用这样的字符串文字:
void foo(int val)
{
std::stringstream s;
s << val;
lbl->set_label("Value: " + s.str());
}
set_label 函数将const std::string& 作为参数。
我应该在这里使用const std::string 代替字符串文字还是没有区别?
我需要尽可能减少运行时内存消耗。
编辑:
我的意思是将字符串文字与在某种常量头文件中初始化的const std::string prefix("Value: "); 进行比较。
此外,这里的连接返回一个临时值(我们称它为 Value: 42 并且对这个临时值的 const 引用被传递给函数 set_text(),我在这方面是否正确?
再次感谢您!
【问题讨论】:
-
你的魔术 8 球怎么说?
-
如果你想尽量减少运行时内存消耗,如何修改 set_label 采用 const char * 并使用 char * 代替字符串?
-
@user347594:很遗憾,我无法修改
set_label -
@Noah:拥有一个 const 字符串会大大提高代码的可维护性,但我会为了这个应用程序的内存优化而牺牲它,因此我的问题 =)
-
既然你说这个函数被频繁调用,你可能不想使用
stringstream,这很慢。见stackoverflow.com/questions/4351371/…。
标签: c++ string constants literals