作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我对分配/存储字符串文字的位置感兴趣。
我确实找到了一个有趣的答案 here ,说:
Defining a string inline actually embeds the data in the program itself and cannot be changed (some compilers allow this by a smart trick, don't bother).
但是,它与 C++ 有关,更不用说它说不要打扰。
我很烦。 =D
所以我的问题是我的字符串文字保存在哪里以及如何保存?为什么我不应该尝试改变它?实现是否因平台而异?有人愿意详细说明“聪明的把戏”吗?
最佳答案
一种常见的技术是将字符串文字放入“只读数据”部分,该部分以只读方式映射到进程空间(这就是您无法更改它的原因)。
它确实因平台而异。例如,较简单的芯片架构可能不支持只读内存段,因此数据段将是可写的。
与其想办法让字符串字面量可变(这将高度依赖于您的平台并且可能随时间而变化),不如使用数组:
char foo[] = "...";
编译器将安排数组从字面量初始化,您可以修改数组。
关于c - 字符串文字 : Where do they go?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2589949/
我是一名优秀的程序员,十分优秀!