c程序中内存四区分别是什么

这篇文章主要介绍了c程序中内存四区分别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创新互联建站为企业级客户提高一站式互联网+设计服务,主要包括做网站、网站设计成都App定制开发成都小程序开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。 

C程序中操作系统常常把代码分为四个区:堆、栈、全局区、代码区。

堆(heap):一般由程序员申请分配和释放空间。
栈区(stack):由操作系统自动分配和释放空间,存放函数的参数值、局部变量等。
全局区(global):全局区又细分为 未初始化区、初始化区、字符常量区。未初始化区存放全局变量和静态变量在一块区域,初始化的全局变量和静态变量同在相邻的另一块区域,程序结束后由操作系统释放。
代码区(code):存放函数体的二进制代码。

c程序的内存四区主要作用是限制变量的作用域和生命周期,方便函数调用。

例如:
char get_str()
{
char str[] = "asdaf";
printf("str = %d,&str = %d",sizeof(str),sizeof(&str));
return str;
}
int main(int argc, char
argv[])
{
QCoreApplication a(argc, argv);

char *b = NULL;

b = get_str();

printf("b = %s",b);

return a.exec();

}
打印出来的b应该是不确定的,因为b指向的内存已经被释放掉了。首先字符串"asdaf"是存储在全局区,在程序结束运行后释放内存,数组str[] 在栈区,get_str()函数结束运行后内存被释放。所以b指向的str 的内存已经被释放了,所以是不确定的。

感谢你能够认真阅读完这篇文章,希望小编分享的“c程序中内存四区分别是什么”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


文章名称:c程序中内存四区分别是什么
分享地址:http://pwwzsj.com/article/gocsop.html