c*****o 发帖数: 178 | 1 题目都很简单,new和malloc,可是有个地方我有点晕。调用new生成的对象是放在heap
吗?我记得
heap存放static和global variables,uninitialized static and global variables
才放在data segment里的阿。可是interviewer说global和static都在data segment里
面。这
块答的不好,哪位高人可以告诉我如何测试global和static变量到底在哪里吗?网上我
看了很多,都
没有一致的答案。非常感谢! |
g*******y 发帖数: 1930 | |
T*****w 发帖数: 802 | |
r**u 发帖数: 1567 | 4 global is static.
static --> data segment, address is determined at compile time. Initialize
to 0.
local variable --> stack
malloc/new --> heap, new calls malloc.
heap
variables
【在 c*****o 的大作中提到】 : 题目都很简单,new和malloc,可是有个地方我有点晕。调用new生成的对象是放在heap : 吗?我记得 : heap存放static和global variables,uninitialized static and global variables : 才放在data segment里的阿。可是interviewer说global和static都在data segment里 : 面。这 : 块答的不好,哪位高人可以告诉我如何测试global和static变量到底在哪里吗?网上我 : 看了很多,都 : 没有一致的答案。非常感谢!
|
c*****o 发帖数: 178 | 5 谢谢高人!不知道有没有测试的代码呢?我怕记不住。 因为这个答的不好,害我情绪
低落,后面题目都
很简单,一个是寻找single linked list中的cycle,一个是提取string里面出现的第
一个整数。
而是因为第一个没答好,我觉得估计是没戏了,5555~~~~~~~~
Initialize
【在 r**u 的大作中提到】 : global is static. : static --> data segment, address is determined at compile time. Initialize : to 0. : local variable --> stack : malloc/new --> heap, new calls malloc. : : heap : variables
|
b****j 发帖数: 78 | 6 data segment指得是在内存中的位置,这个是在x86和其他支持分段的机器上才有的概念
在文件中,initialized static/global 变量在一个叫.data的section里(假设是ELF)
加载到内存中以后,一般.data和.bss都在data segment中,heap也是,heap在他们后
面。
heap
variables
【在 c*****o 的大作中提到】 : 题目都很简单,new和malloc,可是有个地方我有点晕。调用new生成的对象是放在heap : 吗?我记得 : heap存放static和global variables,uninitialized static and global variables : 才放在data segment里的阿。可是interviewer说global和static都在data segment里 : 面。这 : 块答的不好,哪位高人可以告诉我如何测试global和static变量到底在哪里吗?网上我 : 看了很多,都 : 没有一致的答案。非常感谢!
|
r**u 发帖数: 1567 | 7 不是什么高人。这个要写过一写assembly,做过一点跟OS,compiler相关的东西会帮助
理解。
【在 c*****o 的大作中提到】 : 谢谢高人!不知道有没有测试的代码呢?我怕记不住。 因为这个答的不好,害我情绪 : 低落,后面题目都 : 很简单,一个是寻找single linked list中的cycle,一个是提取string里面出现的第 : 一个整数。 : 而是因为第一个没答好,我觉得估计是没戏了,5555~~~~~~~~ : : Initialize
|
a********a 发帖数: 219 | 8 这东西不是记的,是要理解的。。。
光背他随便变化一下问你你就又不行了。
【在 c*****o 的大作中提到】 : 谢谢高人!不知道有没有测试的代码呢?我怕记不住。 因为这个答的不好,害我情绪 : 低落,后面题目都 : 很简单,一个是寻找single linked list中的cycle,一个是提取string里面出现的第 : 一个整数。 : 而是因为第一个没答好,我觉得估计是没戏了,5555~~~~~~~~ : : Initialize
|
a********a 发帖数: 219 | 9 一个没答好很正常,不会有问题的。
如果后面都很好的话。
【在 c*****o 的大作中提到】 : 谢谢高人!不知道有没有测试的代码呢?我怕记不住。 因为这个答的不好,害我情绪 : 低落,后面题目都 : 很简单,一个是寻找single linked list中的cycle,一个是提取string里面出现的第 : 一个整数。 : 而是因为第一个没答好,我觉得估计是没戏了,5555~~~~~~~~ : : Initialize
|
h*********e 发帖数: 56 | 10 windows不知道,以linux gcc为例:
the address map of a process is as follows:
(starting from 0x00000000 to 0xbfffffff)
1. text section: program code (read only)
2. data section: initialized global variables, and static vars (in
function)
3. bss section: uninitialized global variables\
4. heap section: dynamically allocated memory by malloc (new)
5. shared library or memory mapped files
6. stack: function activation frames and local variables
还有一些无关紧要的section,比如 rodata 用来存放 string literals。但直到以上
几个主要的sect |
h*******a 发帖数: 41 | 11 what does bss section stands for? |
h*********e 发帖数: 56 | 12 bss is from the historical name 'Block Started by Symbol'. Since
uninitialized vars are automatically set to zero, there is no need to store
the zero's in the program file. When the program loaded in to memory, a zero
page is mapped. Thus saves disk space. |
l*******y 发帖数: 1498 | 13 bss: block started by symbol, 是data section的一部分,放uninitialized
static/gloable variables. 用它的好处是程序编译好后不用给这些variables在
object file里分配空间,在程序被load去执行前这些variables才被初始化成0. |