![](https://img-blog.csdnimg.cn/20200621114735331.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
内存
C/C++的内存
学无止境12138
热爱编程,希望可以成为自由C++开发工程师。
展开
-
C程序内存泄漏检测工具
VisualC++ debugger 和 CRT 库 VC++2010版的IDE操作如下第一步: 包含以下头文件#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>第二步: 接管 new 操作符#ifdef _DEBUG#ifndef DBG_NEW#define DBG_NEW new ( _NORMAL_BLOCK , FILE ,LINE)#define new DBG_NEW#end原创 2020-07-06 10:24:34 · 424 阅读 · 0 评论 -
C++内存常见错误总结
1. 申请的内存多次释放2. 内存泄漏3. 释放的内存不是申请时的地址4. 释放空指针5. 释放一个内存块,但继续引用其中的内容6. 越界访问示例代码如下:#include <stdio.h>#include <iostream>#include <Windows.h>using namespace std;int main(void) { int * p = new int[20]; p[0] = 0; char *p1 = NULL;原创 2020-06-24 16:47:29 · 209 阅读 · 0 评论 -
C++程序员的恶梦-内存泄漏
内存泄漏(Memory Leak) - 是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏代码如下:#include <stdlib.h>#include <iostream>#include <Windows.h>using namespace std;void A_live() { int * p = new int[1024]; //一直使用 p[0] = 0;原创 2020-06-22 21:24:53 · 263 阅读 · 0 评论 -
动态内存的分配、使用、释放
new 和 delete 基本语法1)在软件项目开发过程中,我们经常需要动态地分配和撤销内存空间,特别是数据结构中结点的插入与删除。在 C 语言中是利用库函数 malloc 和 free 来分配和撤销内存空间的。C++提供了较简便而功能较强的运算符 new 和 delete 来取代 malloc 和 free 函数。(注意: new 和 delete 是运算符,不是函数,因此执行效率高。)2)虽然为了与 C 语言兼容,C++仍保留 malloc 和 free 函数,但建议用户不用 malloc 和 f原创 2020-06-22 18:53:34 · 397 阅读 · 0 评论 -
C语言为什么要使用动态内存
1.按需分配,根据需要分配内存,不浪费。代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <Windows.h>int main(void) { int farmer[10] = { 22, 24, 26, 28, 30, 20, 33, 35, 21, 32 }; int num = 0; int *salary = NULL; printf("原创 2020-06-21 12:34:30 · 391 阅读 · 0 评论 -
C程序内存分布
1. C程序的内存分区1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。2、堆区(heap):一般由程序员分配释放,随叫随到,挥之即走。3、全局/静态区(static):全局变量和静态变量的存储是放在一起的,在程序编译时分配。4、文字常量区:存放常量字符串。5、程序代码区:存放函数体(包括类的成员函数、全局函数)的二进制代码。具体代码表示如下:#include <stdio.h>#include <stdlib.h>#include &原创 2020-06-19 21:29:16 · 290 阅读 · 0 评论