Linux 内存分配的问题

zhangyuxiu · November 22, 2013 · Last by kevinxu replied at February 10, 2014 · 2620 hits

前两天笔试碰到一道题: 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, 和堆内存交换 -- 就到堆上了。

You need to Sign in before reply, if you don't have an account, please Sign up first.