内存之美
ABC我的博客
主要是自己平时回顾起来方便
工作忙没时间更新了,望理解
展开
-
C和C++的内存布局
1.1 内存分布图Stack段:局部变量存放区域。heap段:用户动态分配内存区域。bss段:存放未初始化的全局或静态变量内存区域。(Block Started by Symbol)数据段:通常指存放已初始化的全局变量的内存区域。(data segment)代码段:通常指存放程序执行代码的一块内存区域。(code segment/text segment)1.2 在C中分为5个存储区...原创 2019-04-11 17:21:49 · 1494 阅读 · 1 评论 -
C/C++中堆区和自由存储区的区别与联系
堆区和自由存储区的区别与联系(1)malloc申请的内存在堆上,使用free释放。new申请的内存在自由存储区,用delete释放(2)堆(heap)是c语言和操作系统的术语。堆是操作系统所维护的一块特殊内存,它提供了动态分配的功能,当程序运行时调用malloc()时就会从中分配,调用free可把内存交换。而自由存储区是C++中通过new和delete动态分配和释放对象的抽象概念,通过new来...转载 2019-04-11 17:29:19 · 5079 阅读 · 0 评论 -
C/C++中堆和栈的区别
堆和栈的区别(1)管理方式不同:stack:系统自动分配释放,如声明int a;系统自动在栈区为变量开辟空间heap:程序员申请释放,容易产生内存泄漏,并指明大小,c中malloc,如char *p = (char *)malloc(10);//10个字节C++中的new操作符,int p2=new int(10);//4个字节的int型注意:p和p2本身是在栈中,但他们指向的地址是堆空...原创 2019-04-11 17:30:37 · 1504 阅读 · 0 评论 -
C++常见的内存错误及解决方法
C++常见的内存错误及解决方法(1)内存分配未成功,却使用了它。解决方法:在使用内存之前先检查指针是否是NULL。如果是用malloc来申请内存,应该用if(p == NULL)或if(p != NULL)进行防错处理。如果是new来申请内存,申请失败会抛出异常,所以应该捕捉异常来进行防错处理。(2)内存虽然分配成功,但尚未初始化就引用它。解决办法: 尽管有时候缺省时会自动初始化,但无论什...原创 2019-04-11 17:32:17 · 1608 阅读 · 0 评论 -
C++内存泄漏
内存泄漏内存溢出:(out of memory)通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。内存泄漏:(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。只发生一次小的内存泄漏可能不会被注意,但是泄漏大量内存的程...原创 2019-04-11 17:34:51 · 256 阅读 · 0 评论