+ -
当前位置:首页 → 问答吧 → C内存分配的疑问

C内存分配的疑问

时间:2011-12-05

来源:互联网

这些是网上资料

在c中分为这几个存储区
1.栈 - 由编译器自动分配释放
2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放
4.另外还有一个专门放常量的地方。- 程序结束释放

那么 这4个存储区在内存中的所占的区域是固定的吗,如果不是固定的,怎样修改它们的范围?比如扩大堆存储区的范围

作者: rszqy   发布时间: 2011-12-05

这个是从操作系统这个切面来分的。c语言中木有栈 堆 全局区之类的区~~~

作者: Demon__Hunter   发布时间: 2011-12-05

都是相对地址
可以在编译选项里,设置栈的大小

作者: ouyh12345   发布时间: 2011-12-05

缩小栈的同时扩大了堆

作者: zhao4zhong1   发布时间: 2011-12-05

自己在os框架上分配

作者: walkersfaint   发布时间: 2011-12-05

如果你不能调整操作系统的话,这个是做不了的。

作者: asong2004   发布时间: 2011-12-05

都是虚拟内存,进程运行时才会映射

作者: mosal   发布时间: 2011-12-05

引用 6 楼 mosal 的回复:
都是虚拟内存,进程运行时才会映射


为了便于实现,os 对各存储区有固定划分

作者: AnYidan   发布时间: 2011-12-05

别把“段 segment”和“栈 stack”还有“堆 heap”搞混了。

作者: sinservice   发布时间: 2011-12-05

我也不理解,来看看,还是没懂、、、、

作者: abc225dingdong   发布时间: 2011-12-05