编程面试题总结

1、堆和栈的区别

这里的堆和栈指的是内存里面的堆区和栈区。C语言的内存模型可以分为5类:栈区、堆区、静态区、常量区、代码区。

  1. 栈区stack:存放函数的参数值,局部变量等等。由编译器自动分配和释放(可以回忆编程的时候好像局部变量不需要特别的申请内存和释放),通常在函数执行结束之后释放。其操作方式类似于数据结构中的栈。栈内存分配运算一般都是内置于CPU指令集,可以理解为机器语言或者汇编语言,所以效率高。但是容量有限,IOS的栈区只有2M。
  2. 堆区heap:堆区是不连续的内存空间。一般通过new、malloc申请,通过delete、free释放,所以一般需要自己MRC(手动管理内存)。堆释放不当容易导致内存泄露。
  3. 静态区:全局变量和静态变量存储区。一般程序结束后,由系统释放。宏定义本质上就是字面值的替换,存储在静态区。
  4. 常量区:常量存储区域,不允许修改。比如字符串常量。
  5. 代码区:存放函数体的二进制代码

现在来看一下最基本的C语言程序:

#include <std
  • 1
    点赞
  • 0
    评论
  • 10
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值