| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2023 人关注过本帖
标题:[讨论]数据是在内存中怎样存放的呢????
只看楼主 加入收藏
wuyu123321
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-9-18
收藏
得分:0 
2楼的是不是搞错了啊
2007-09-18 17:37
flyu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-27
收藏
得分:0 
回复:(yandongdido)flyu好象说的挺有道理的 谢谢拉...
呵呵
你找的资料也很丰富啊!我的资料是基于linux,并且是在x86芯片上的。
有关于windows的内存管理的资料,在我这里是空白啊!
感谢你找得资料!
你找得好详细啊!
佩服!
2007-09-20 14:34
flyu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-27
收藏
得分:0 
回复:(wangweicoin)回复flyu:局部变量应该保存在栈...

谢谢指出我的问题。
我再查查资料,谢谢!

2007-09-20 14:46
flyu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2007-7-27
收藏
得分:0 
回复:(wuyu123321)2楼的是不是搞错了啊
麻烦你,如果要说人错了,就指出错在哪里,好吗?
这样别人才会感谢你!
2007-09-20 14:49
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 

全局变量和静态变量不在栈中,局部的才在栈中,随着该局部变量作用域的结束自己肖失,用new或者mollac分配的才在堆中,需要显式delete/free

2007-09-24 22:15
小肥猪
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-22
收藏
得分:0 
我们都知道:内存大体是分为4个段的 data  text stack heap
    其中 代码是存于text段的 局部变量是存于stack 段的 heap是malloc或者new的时候存于这里 data段分为data bass  rodata 三个部分
   其中一般的全局变量是存于data段的 const之类定义的全局变量是存于rodata段的 (const定义的局部变量是存在stack的)
    而在汇编语言中,在编译和汇编程elf文件的过程中只会给text 段和data段分配空间 而对于heap stack段的数据 只是做一个标记,变为指令进行处理 ,在程序变为进程的时候 stack 和heap 才会开辟,这也是为什么,我们绕过编译器 ,将const定义的局部变量间接改变值可以成功,而直接修改const定义的全局变量无法成功的原因,编译器只会在编译成汇编程序的过程中进行一次语法检查,而在运行时候再进行一次检查
2011-11-22 01:12
快速回复:[讨论]数据是在内存中怎样存放的呢????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015351 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved