Linux 内存分配的问题

zhangyuxiu · 2013年11月22日 · 最后由 kevinxu 回复于 2014年02月10日 · 2623 次阅读

前两天笔试碰到一道题: char *p = "aaa";

问字符串“aaa”存放在哪里? A 数据段 B 代码段 C 堆 D 堆栈 E 不一定

答案是什么呢?不确定常量区对应到内存中,是在代码段中,还是数据段中啊?

E 编译器一优化位置就不确定了。

考虑到 getcontext/setcontext 在堆上都是有可能的。

#1 楼 @luikore 求科普,getcontext/setcontext 是什么意思呢?

看是函数里的还是文件里的 文件里的在 A 函数里的在 D

#4 楼 @putty ABCD 都有可能

我以为是堆呢。

#5 楼 @luikore 求详解,为什么啊?

#7 楼 @zhangyuxiu

不优化就一般在数据段或者代码段

但优化了就难说了,例如接着就使用 p[0], p[1], p[2] 的话,可能整个字符串都压到栈上了。如果压到了栈上了,并且做了 setcontext, 和堆内存交换 -- 就到堆上了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号