前两天笔试碰到一道题: char *p = "aaa";
问字符串“aaa”存放在哪里? A 数据段 B 代码段 C 堆 D 堆栈 E 不一定
答案是什么呢?不确定常量区对应到内存中,是在代码段中,还是数据段中啊?
E 编译器一优化位置就不确定了。
考虑到 getcontext/setcontext 在堆上都是有可能的。
#1 楼 @luikore 求科普,getcontext/setcontext 是什么意思呢?
#2 楼 @zhangyuxiu http://linux.die.net/man/3/getcontext
看是函数里的还是文件里的 文件里的在 A 函数里的在 D
#4 楼 @putty ABCD 都有可能
我以为是堆呢。
#5 楼 @luikore 求详解,为什么啊?
#7 楼 @zhangyuxiu
不优化就一般在数据段或者代码段
但优化了就难说了,例如接着就使用 p[0], p[1], p[2] 的话,可能整个字符串都压到栈上了。如果压到了栈上了,并且做了 setcontext, 和堆内存交换 -- 就到堆上了。
E