我已经读过const字符串对象存储为值并在编译时分配它们的值。这是否意味着即使封装类没有实例化也会分配内存,即如果使用了const关键字(太多的const字符串)会浪费堆空间?
编辑:某些背景信息......
我需要很多常量值string
对象,其中一些肯定会被使用,而另一些将根据用户的交互使用(即仅针对特定用例)。我知道将使用的第一组字符串我在static
类中声明为const
个对象。其余的字符串,是否应该使用const
声明,否则如果永远不会触发那些特定的用例,这会占用不必要的堆空间吗?
答案 0 :(得分:2)
如果你的字符串是你的类的静态属性,那么它们将被分配,否则它们将被分配,直到它们被实例化
String interning是一个进程,用于改善内存和堆使用,并允许更有效的字符串比较
<强> http://en.wikipedia.org/wiki/String_interning 强>
<强> http://broadcast.oreilly.com/2010/08/understanding-c-stringintern-m.html 强>