信阳做网站推广信阳网站建设,青岛市建设安全监督站网站,网站策划中规划预测怎们做,建设网站赚钱么创作不易#xff0c;本篇文章如果帮助到了你#xff0c;还请点赞支持一下♡#x16966;)!! 主页专栏有更多知识#xff0c;如有疑问欢迎大家指正讨论#xff0c;共同进步#xff01; 给大家跳段街舞感谢支持#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ… 创作不易本篇文章如果帮助到了你还请点赞支持一下♡)!! 主页专栏有更多知识如有疑问欢迎大家指正讨论共同进步 给大家跳段街舞感谢支持ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ c语言系列专栏 c语言之路重点知识整合
相关知识点c语言全局变量、局部变量详解 目录
内存区域分为
栈区
堆区
堆区和栈区的区别 内存区域分为 代码区code zone、常数区constant zone、全局变量区global zone、栈区stack zone、堆区heap zone。 例
#include stdio.h
int sum(int aint b) //sum 代码区 a b栈区
{static int c; //c 全局变量区cab;return c;
}
int q; //q全局变量区
int main ()
{printf(%d\n,sum(1,2)); // 1 2常数区return 0; // 0 常数区
}
1 代码区用来存放函数{ }内流程结构中的代码
2 常数区存放不可改变的常数
3 全局变量区存放全局变量和静态变量
4 栈区存放局部变量
5 堆区存放大量的数据 栈区
对于栈区中的局部变量函数调用才进行创建函数执行完就会被自动回收
例
调用完函数再打印其中的局部变量
#include stdio.h
int* func()
{int a;a 10;return a;
}int main()
{/*栈区*/int* p func();printf(%d\n, *p);printf(%d\n, *p);printf(%d\n, *p);return 0;
}堆区
如果栈区内的局部变量不想被自动回收持续有效就可以手动使用malloc将堆区创建一个存储空间并把局部变量存放进去该数据如果不被手动回收就会一直存放在堆区中。
#include stdio.h
#include malloc.hint* func()
{int a;a 10;return a;
}int main()
{ int* m malloc(sizeof(int)); //一个数据 申请4字节的空间int* mm malloc(sizeof(int) * 5); //5个数据*m 9; //利用*p对堆空间进行数据存取mm[3] 5; //数组方式free(m);free(mm); //释放堆内存m NULL; //指向空指针mm NULL; calloc同样分配堆空间只是赋予初始值为0malloc不会被初始化值是未知的
堆区和栈区的区别 1.分配方式不同堆区只有在遇到malloc才会创建 栈区在函数调用全部创建完 2.栈区临时性、少量的数据 堆区持续的、大量的数据 3.管理方式不同栈区自动 堆区手动 4.堆区分配的空间更大 5.都是延伸性增长方向不同 6.堆区容易产生碎片 free 栈区自动创建回收不会产生碎片 不释放的安全隐患占用内存空间导致程序不能正常运行 大家的点赞、收藏、关注将是我更新的最大动力欢迎留言或私信建议或问题。大家的支持和反馈对我来说意义重大我会继续不断努力提供有价值的内容