| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1179 人关注过本帖
标题:关于程序所占的内存空间!
只看楼主 加入收藏
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
 问题点数:0 回复次数:6 
关于程序所占的内存空间!

请问,用TC写出来的程序,其所有函数里每条命令所占内存与所有变量所占内存之和是否被限制在一定的范围???
谢谢!!!

搜索更多相关主题的帖子: 内存 空间 变量 之和 
2006-06-19 21:02
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

淘宝杜琨
2006-06-19 22:01
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
得分:0 
以下是引用神vLinux飘飘在2006-6-19 22:01:26的发言:

小于32K是吗??

[此贴子已经被作者于2006-6-19 22:21:05编辑过]


Finding!!!
2006-06-19 22:09
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 

有5种模式。


2006-06-20 09:10
georgezf
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2004-11-20
收藏
得分:0 
是否是DOS那可恶的640K?

2006-06-20 10:24
一叶知秋
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-6-3
收藏
得分:0 
[转]

tc六种内存模式:tiny、small、medium、compact、large和huge,其中tiny、small和medium由于数据段不能超过64k,叫小数据模式,compact、large和huge的数据段可以超过64k,叫大数据模式;类似地,tiny、small和compact叫小代码模式,medium、large和huge叫大代码模式。

小数据模式和大数据模式的数据段分为静态存储区、堆、栈和远堆四部分,静态存储区的排列顺序是一样的,都跟在代码段后面,但堆和栈排列顺序是不一样的。小数据模式数据段的排列方式是(由低到高地址)静态存储区、堆、栈、远堆,大数据模式则是静态存储区、栈、堆(包含远堆)。

大数据模式中的数据段可以超过64k的意思并非你可以任意定义一个对象超过64k,而是组成数据段的静态存储区、栈和堆空间的总和可以超过64k。

三种大数据模式的栈大小均不能超过64k,原因是受到实模式的限制,一个段大小最大只能是64k,这意味着,所有自动对象所占内存空间的总和最大不能超过64k,否则就栈溢出了;

compact和large模式的静态存储区不能超过64k,而huge则可以,这里所说的可以,并非指你就可以通过huge模式定义一个大于64k的静态数组,而是指静态存储区的总和可以大于64k,但组成静态存储区的每个编译单元(也就是一个文件)不能超过64k,举个例,如果你需要定义一个数组static char a[70000l],这是不行的,你得把这个数组分成两部分,分别放在不同的编译单元里,例如a.c里面放static char a[35000l],而b.c放static char a[35000l]。

但是我非得定义一个大于64k的数组,怎么办啊?可以通过远堆进行定义,条件是:

1。使用大数据模式;
2。使用farmalloc函数分配;
3。使用huge巨型指针,不能用far指针,因为far指针的段值部分是不变的,而huge指针是规范化的,段值部分可以改变。
2006-06-20 10:57
songweiwen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2006-2-19
收藏
得分:0 

谢谢!!!


Finding!!!
2006-06-20 12:42
快速回复:关于程序所占的内存空间!
数据加载中...
 
   



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

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