Chinaunix

标题: 今天看各种博客 糊涂了 [打印本页]

作者: 你还未够水准呢    时间: 2013-04-10 13:25
标题: 今天看各种博客 糊涂了


char *c="asdasdsa";

有的博客说在常量存储区(不可修改)

有的说在 静态存储区

。。。。。越来越糊涂了
作者: 耗资喜欢猫    时间: 2013-04-10 13:33
常量区,不过区段可以合并,感兴趣的话,可以看下PE结构(如果是windows平台下的话),Linux不太清楚
作者: cokeboL    时间: 2013-04-10 13:35
APUE 2好像第七章有一点,深入理解linux内核后面部分有一些,程序员自我修养之类的书,找找看吧
或者看下/proc下面有mmap还是什么来着,你写个程序按照地址找下那个内存布局,一看就懂了
作者: 你还未够水准呢    时间: 2013-04-10 13:37
手上只有APUE  CSAPP上应该也有。。。。回复 3# cokeboL


   
作者: 你还未够水准呢    时间: 2013-04-10 13:39
好的  谢谢回复!!回复 2# 耗资喜欢猫


   
作者: hanxin83    时间: 2013-04-10 14:14
常量存储区 linux下一般存到.rodata了, 有些低版本的gcc会存到.text里去.
windows一般在.rdata节里, 不过不确定是不是所有版本都如此.

一般只要知道这个玩意不能改也就是了. 没必要搞得100%精确.
作者: 你还未够水准呢    时间: 2013-04-10 15:52
恩  我也赞同你后面的那句话  不过有时候就蛋疼了一下。。。
hanxin83 发表于 2013-04-10 14:14
常量存储区 linux下一般存到.rodata了, 有些低版本的gcc会存到.text里去.
windows一般在.rdata节里, 不过不 ...

作者: pmerofc    时间: 2013-04-10 16:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 你还未够水准呢    时间: 2013-04-10 17:00
还是看好书比较好 APUE 和 CSAPP上我翻了下 没提到这些概念

APUE 里面的描述
C程序的存储空间布局
正文段
初始化数据段
非初始化数据段

回复 8# pmerofc


   
作者: pmerofc    时间: 2013-04-10 17:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: solu    时间: 2013-04-11 09:42
pmerofc 发表于 2013-04-10 16:49
回复 1# 你还未够水准呢


你讨论问题只是单纯的讨论C吗? 不用和系统环境一起考虑吗?
作者: tansijie    时间: 2013-04-11 13:26
明显是常量区,本身就是一个常量字符串,你试着修改下字符串中的值,你看看你的程序是否会coredump
作者: pmerofc    时间: 2013-04-11 15:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: solu    时间: 2013-04-11 16:30
本帖最后由 solu 于 2013-04-11 16:32 编辑
pmerofc 发表于 2013-04-11 15:27
我只是反对把不是C的知识说成是C的,以及把特例说成无条件的普遍



上面讨论的人没有人说这是纯C的特征,都是在linux或者windows下面考虑的。你自己太敏感了。
作者: pmerofc    时间: 2013-04-11 17:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: pmerofc    时间: 2013-04-12 09:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: solu    时间: 2013-04-12 16:34
本帖最后由 solu 于 2013-04-12 16:35 编辑
pmerofc 发表于 2013-04-12 09:17
回复 14# solu


我觉得深入了解一下内存分布还是很重要的,会在大脑形成一个具体模型,而不只是抽象的概念。

下面的一块内存,数字是每个字段的位数, 怎么用结构体表示出来? 考虑大小端/位域。


作者: pmerofc    时间: 2013-04-12 21:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: solu    时间: 2013-04-12 21:57
pmerofc 发表于 2013-04-12 21:30
回复 17# solu

我不反对了解内存分别


就是连续的。
作者: pmerofc    时间: 2013-04-13 08:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: 你还未够水准呢    时间: 2013-04-13 16:16
本帖最后由 你还未够水准呢 于 2013-04-13 16:17 编辑

今天腾讯的实习笔试就考了 char *p = "hello world!"

字符串是存储在哪里

答案应该是 选项 栈和常量区。。。回复 16# pmerofc


   
作者: pmerofc    时间: 2013-04-13 18:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: zmdesperado    时间: 2013-04-15 21:28
回复 21# 你还未够水准呢


    不可能在栈中吧。若写成char p[] = "hello world";倒可能哇。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2