1. 内存分配和管理

1.1 malloc、calloc、realloc、alloca

  1. malloc:申请指定字节数的内存。申请到的内存中的初始值不确定。
  2. calloc:为指定长度的对象,分配能容纳其指定个数的内存。申请到的内存的每一位(bit)都初始化为 0。
  3. realloc:更改以前分配的内存长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个足够大的区域,而新增区域内的初始值则不确定。
  4. alloca:在栈上申请内存。程序在出栈的时候,会自动释放内存。但是需要注意的是,alloca 不具可移植性, 而且在没有传统堆栈的机器上很难实现。alloca 不宜使用在必须广泛移植的程序中。C99 中支持变长数组 (VLA),可以用来替代 alloca。

1.2 malloc、free

用于分配、释放内存

malloc、free 使用

申请内存,确认是否申请成功

char *str = (char*) malloc();
assert(str != nullptr);

释放内存后指针置空

free(p);
p = nullptr;

1.3 new、delete

  1. new / new[]:完成两件事,先底层调用 malloc 分配了内存,然后调用构造函数(创建对象)。
  2. delete/delete[]:也完成两件事,先调用析构函数(清理资源),然后底层调用 free 释放空间。
  3. new 在申请内存时会自动计算所需字节数,而 malloc 则需我们自己输入申请内存空间的字节数。
 

最新文章

  1. Nuke
  2. JDK 1.5 1.6 override区别
  3. 小米、MIUI、sqlite3: not found--miui安装sqlite3
  4. Ionic 2 Guide
  5. ASP.NET 大文件上传的简单处理
  6. Eziriz.Net.Reactor使用注意事项
  7. Scala很难!
  8. [SOJ] 图的广度优先搜索
  9. bzoj 4538: [Hnoi2016]网络
  10. 数据库连接池(c3p0)
  11. 小技巧-C#文本快速删除空行
  12. appium 运行报错:...... Attempt to re-install io.appium.settings without first uninstalling解决方案
  13. 一、操作m'y's'ql
  14. ABP EventBus(事件总线)
  15. 第9条:try-with-resources优于try-finally
  16. ASP.NET Core 注入和获取 AppSettings 配置
  17. MacBook PyCharm永久激活
  18. hdu 5079 Square
  19. Java并发编程中的设计模式解析(一)
  20. pysam - 多种格式基因组数据(sam/bam/vcf/bcf/cram/…)读写与处理模块(python)--转载

热门文章

  1. 不是说记住rm -rf的教训就够了
  2. Pro Git
  3. 一个GD初二蒟蒻的自我介绍
  4. 前端基础-- HTML
  5. 使用 Spring Cloud Stream 构建消息驱动微服务
  6. 洛谷P3810 陌上花开 CDQ分治(三维偏序)
  7. Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(3)
  8. python解决json序列化时间格式
  9. 第八节、图片分割之GrabCut算法、分水岭算法
  10. Myeclipse启动报错:An error has occurred.See the log file