C语言的内存分配方式:堆以及栈

小微 科技C语言的内存分配方式:堆以及栈已关闭评论101字数 819阅读模式
摘要在 C 语言中,内存分配方式有以下三种形式:1、从静态存储区域分配由编译器自动分配和释放,在程序编译的时候就已经分配好内存,这块内存在程序的整个运行期间都存在,直到整个程序运行结束...

在 C 语言中,内存分配方式有下列三种情势:

1、从静态存储区域分配文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

由编译器自动分配以及释放,在程序编译的时候就已经分配好内存,这块内存在程序的整个运行期间都存在,直到整个程序运行收场时才被释放,如全局变量与 static 变量。文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

2、在栈上分配文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

一样由编译器自动分配以及释放,在函数执行时,函数内部的局部变量均可以在栈上创立,函数执行收场时,这些存储单元将则被自动释放。文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

需要注意的是,栈内存分配运算内置于处理器的指令集中,它的运行效力一般很高,然而分配的内存容量有限。文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

3、从堆上分配文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

也称为动态内存分配,由程序员手动完成申请以及释放。程序在运行的时,由程序员使用内存分配函数(如 malloc 函数)来申请内存,使用完以后再由程序员自己负责使用内存释放函数(如 free 函数)来释放内存。文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

需要注意的是,如果在堆上分配了内存空间,就必需及时释放它,否则将会致使运行的程序呈现内存泄露等过错。文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

在 C 语言中,不同类型变量的存储位置以及作用域也有所不同。文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

全局变量文章源自微观生活(93wg.com)微观生活-https://93wg.com/18825.html

从静态存储区域分配,其作用域是全局作用域,也就是整个程序的生命周期内均可以使用。如果程序是由多个源文件形成的,那么全局变量只要在一个文件中定义,就能够在其他所有的文件中使用,但必需在其他文件中通过使用extern关键字来声明该全局变量。

全局静态变量

从静态存储区域分配,其生命周期也是与整个程序同在的,从程序开始到收场一直起作用。与全局变量不同的是,全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用。

局部变量

从栈上分配,其作用域只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就再也不起作用,也即该变量的生命周期以及该函数同在。

局部静态变量

从静态存储区域分配,其在第一次初始化后就一直存在直到程序收场。该变量的特色是其作用域只在定义它的函数内可见,出了该函数就不可见了。

以上就是微观生活(93wg.com)关于“C语言的内存分配方式:堆以及栈”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/18825.html