我对字符串文字的分配/存储位置感兴趣。
我确实找到了一个有趣的答案here https://stackoverflow.com/questions/51592/is-there-a-need-to-destroy-char-string-or-char-new-char6/51607#51607,说:
内联定义字符串实际上是将数据嵌入到程序本身中并且无法更改(某些编译器通过巧妙的技巧允许这样做,不必打扰)。
但是,它与 C++ 有关,更不用说它说不用打扰了。
我很烦。 =D
所以我的问题是我的字符串文字保存在哪里以及如何保存?为什么我不应该尝试改变它?实施是否因平台而异?有人愿意详细说明“聪明的技巧”吗?
一种常见的技术是将字符串文字放入“只读数据”部分,该部分以只读方式映射到进程空间(这就是您无法更改它的原因)。
它确实因平台而异。例如,更简单的芯片架构可能不支持只读存储器段,因此数据段将是可写的。
与其尝试找出使字符串文字可变的技巧(它将高度依赖于您的平台并且可能会随着时间的推移而变化),只需使用数组:
char foo[] = "...";
编译器将安排数组从文字初始化,您可以修改数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)