以下是引用信箱有效在2013-2-22 01:53:35的发言:
你看 都没人回你。
你已经快走火入魔了。
因为你刚学 没有足够的知识积累 所以没必要深究这些。
既然要死抠字眼 那你也没抠对地方哇。 是能为其分配相应的,这个是和前半句的 确定的类型对应的。 被指定为char int 数组等等的某个确定的类型,然后编译时就能为其分配相应的内存单元。 类型不确定 谁知道该给它分配什么样的存储单元呢。 这句的重点不是要告诉你编译时给它分配 而是告诉你要有确定的类型 才能给它分配相应的单元。
就拿你很疑惑的局部变量来讲,你已经知道这个是在“动态分配”的栈区。
当然是在栈。
进入函数后 栈顶指针esp减小 分配了空间。
分配多少 这个就是在编译时确定的,编译器计算该函数所需的局部变量空间大小,并且用适当的方式进行优化。
因为编译时就明确了这个函数局部变量需要在栈中使用多少空间,所以当然可以说编译时分配。
到时候给你在这儿整点儿地方 ,不到时候不给你。何时 何地 数量 在编译时就都已经确定了,这才是局部变量空间 动态分配 的意思。另外一个 动态 的意思还包括在栈中是使用esp/ebp指针而不是像全局变量那样使用的是虚拟地址。
虽然尽量用简单直白的方式表达,恐怕你还是不能完全理解。还是那句,
没必要钻这些牛角尖,你这个问题发了好几个帖子,有这时间,都能看大半本书了。
大哥还有一个问题啊,编译后产生的OBJ文件是二进制代码,此时的OBJ文件中是不是就像汇编程序中的结构那样已经有了4个段????(或者说,已经定义了4个段)
[
本帖最后由 suishuhao 于 2013-2-22 11:14 编辑 ]