动态申请内存的优势

在刷LeetCode的时候,经常需要定义数组,很多写法使用动态申请内存的写法,比如我要申请一个二维数组,动态申请内存的写法为:

int** nums = (int **)malloc(sizeof(int*)*m);
for(int i = 0; i < m; i++){nums[i] = malloc(sizeof(int)*n);
}

我也可以这么写:

int nums[m][n];

既然可以这么简单的定义数组,为什么还要动态申请内存这么复杂的写法?动态分配,说简单点,就是在需要的时候,需要多少分配多少,不需要的时候释放掉。从这种说法就可以看出好处。跟花钱一样,省着花,不要的时候卖二手。如果以开始就把钱花完,万一哪天生病了急需钱,上哪里找啊。动态申请内存的特点有以下几点:

  • 当你定义了一个指针,而且要往里面写数据时,必须要动态分配内存给他。
  • 动态分配的内存在堆上,你有权利决定什么时候将他释放掉。
  • 动态分配的内存请记得一定要释放掉,不然容易引起内存泄露。
  • 栈上能分配的空间默认很小(1M)。使用动态申请的方法,可以再堆上申请比这个远远大得多的内存
    切记一定不要忘记释放掉我们动态申请的内存:
free(nums);

Tips--动态申请内存的优势相关推荐

  1. C++二维数组动态申请内存

    好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到 ...

  2. C++学习之路抓紧跑路版(七)-动态申请内存空间

    文章目录 前言 一.如何申请动态内存空间? 二.练习 总结 前言 今天我们来看下在C++中如何动态申请内存空间,不多比比 一.如何申请动态内存空间? 在C++中我们用new/delete来申请和释放内 ...

  3. C语言动态申请内存空间之malloc(),calloc(),realloc()函数

    在C语言中用于动态申请内存空间的函数主要为malloc()函数,calloc()函数,以及realloc()函数,以下主要介绍三个函数的用法,区别以及使用时的注意事项. malloc(),calloc ...

  4. C语言动态二维数组,结构体动态申请内存空间

    在C语言中,申请一般数组时,数组大小必须是常量.即使是赋了特定值的变量,也不行,比如:int n=3;int a[3];这样的做法是错误的,我们需要动态申请数组内存,如下申请一个动态整数(int)二维 ...

  5. vector容器动态申请内存的过程_记录一次自定义Allocator profile的过程

    交代背景 最近组里小伙伴通过组播技术实现发送同一报文到多个接收者,Receiver端会申请内存接收UDP数据包并存入指定Queue中,待用户从Queue中取出数据后会将这块内存回收.上述数据发送功能主 ...

  6. C语言动态申请内存空间

    为什么要动态内存申请 1.定义数组的时候数组的长度是预先定义好的,在整个程序中固定不变; 2.但是在实际的编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据,而无法预先确定 3.为了解决 ...

  7. 【❌❌vectorの奇技淫巧⭕⭕】C++ vector 如何正确处理动态申请内存的元素

    C++ vector 插入动态内存(new.malloc申请的内存)及销毁动态内存 (delete .free)demo 我们使用vector时候,有时候会插入一些动态内存数据(例如new出来的指针插 ...

  8. C-获得文件大小并动态申请内存屏幕打印文件内容小程序

    思想: 要想将文件内容完全装入一个合理的内存空间 首先要获得文件大小,通过feek(fp,0,SEEK_END)将光标移动到文件尾部,在使用ftell获得当前光标距离文件首部的偏移量就等价于文件的大小 ...

  9. c通讯录 :动态申请内存版本

    //1.contect.c#define _CRT_SECURE_NO_WARNINGS 1 #include"contect.h" #include<assert.h> ...

最新文章

  1. 如何用计算机弹逆战6,逆战星光弹夹使用方法介绍 轻松玩转星光弹
  2. Microsoft Visual Studio 2008 快捷键
  3. c# webform ajax操作,C#-WebForm-AJAX阿贾克斯(一)基本格式
  4. [iOS]深入浅出 iOS 之多线程 NSThread
  5. 工具分享 | LiqunKit 综合漏洞利用工具(下载地址在文末)
  6. 苹果手机录屏软件_手机端录屏软件哪个好 手机上最好的录屏软件
  7. 高中计算机编程语句,高中信息技术程序设计知识点.doc
  8. 计算机软件可以控制单片机,一个电脑控制单片机通讯程序分享
  9. 2022-2028全球电动汽车电池冷却器行业调研及趋势分析报告
  10. 何为A站、B站、C站、D站、F站??
  11. linux删除mysql用户_如何删除MySQL用户帐户
  12. apscheduler任务配置信息,实现100%数据库化
  13. ccf公共钥匙盒python_CCF/CSP 公共钥匙盒
  14. wstmart 对目录进行授权
  15. [超详细]Echarts+vue+百度地图 动态实现城市疫情地图
  16. 开发人员常用工具最全锦集(持续更新)
  17. 使用WSAIoctl获取socket扩展函数(如AcceptEx)的指针
  18. Linux系统:SSH无密登录配置
  19. 什么是黑盒测试和白盒测试?
  20. mysql查看用户购买_mysql查询——购买所有产品的客户

热门文章

  1. android stepview 京东,Android-Android-OpenAPI SDK-帮助文档-京东云
  2. mysql 导入gtid_开启gtid导入报错
  3. 中小学计算机教育的重要性,信息技术在小学教育中重要性.doc
  4. 网络安全人才短缺加剧,企业如何不拘一格降人才?
  5. 抗锯齿 文字_PS之使用文字工具
  6. vb教材笔记_VB课堂笔记-----第五章 数据的输入与输出
  7. docker 安装 sqlserver 数据库
  8. SecureCRT密钥key远连接程ssh证书登录Linux
  9. MapReduce学习笔记(4)
  10. SQL的四种连接-左外连接、右外连接、内连接、全连接(转)