C语言_堆和栈
来源:互联网 发布:班班通教学软件 源码 编辑:程序博客网 时间:2024/05/16 01:30
//***** 堆栈 *****void test1(){ int a = 100; // a存放在栈中 int *p = (int *)malloc(sizeof(int)); //p指向申请的堆的首地址 // 栈 /* 栈 栈是一块连续的内存区域,这块区域的大小是固定的,是一个编译时就确定的常数,假如申请的内存空间超过栈的剩余空间,将会栈溢出 栈的内存是连续的,不会产生内存碎片,因此栈中的数据执行速度很快 */ // 堆 /* 堆 堆是不连续的内存区域,各块区域由链表将它们串联起来,堆空间是由系统的虚拟内存申请而来,堆的空间比较大,堆由程序员自己申请空间 由于堆的内存是不连续的,容易产生碎片,因此堆中的数据执行速度比较慢 */}//***** 申请堆空间 *****void test2(){ int *p = (int *)malloc(sizeof(int)); // 申请int类型大小的堆空间 if(p == NULL) { printf("申请堆空间失败!"); // 由于是由虚拟内存空间申请而来,可能申请失败,所以判断下是否为空 } else { *p = 100; printf("*p:%d\n",*p); free(p); // 使用完堆空间后,一定要释放该指针指向的堆空间,要不然会出现内存泄露 p = NULL; // 释放掉该指针指向的堆空间后,一定要把该指针设置为空指针,要不然该指针就是迷途指针,也叫野指针 } /* C语言使用malloc申请堆空间,使用相对应的free()释放申请的堆空间 申请的堆空间只能使用指针操作,假如指向该堆空间的指针丢失了,那这块内存就像丢失了一样,这样的情况一直持续到程序运行结束,这种情况就叫内存泄露。 注意:free()不能释放多次,要和malloc对应出现,不能说怕内存释放不彻底多释放几次,这样会造成程序崩溃 */}
1 0
- C语言_堆和栈
- C++_堆和栈
- c语言堆和栈的区别
- C语言中的堆和栈
- c语言堆和栈的区别
- C语言堆和栈的区别
- c语言 栈和堆的区别
- C语言栈、堆和静态区
- c语言中的栈 和 堆
- C语言中栈和堆 内存
- C语言中堆和栈
- C语言栈、堆和静态区
- C语言栈、堆和静态区
- C语言里面的栈和堆
- C语言中的堆和栈
- c语言堆和栈的区别
- 深入理解C语言堆和栈
- C语言堆和栈区别(十)
- Android的SurfaceView使用
- 最长非降 nlogn 带路径标记
- 2014.09.22 Jfinal注解方式自动配置路由和数据库映射
- 【Axure教程】Axure中使用表格的技巧
- C系列函数原型之-StrStr(char *str,char *subStr)的实现
- C语言_堆和栈
- VisualStudioVS2010统计代码行数
- windows 编译ffmpeg 播放 rtmp
- 关于数字证书和数字签名的一些认识
- Python安装pandas,matplotlib
- excel导入
- 字符编码笔记:ASCII,Unicode和UTF-8
- 《Linux程序设计》——终端
- 在代码中获得view的宽度和高度