内存管理与预处理,结构体问题

1:(.bss段):直观来说即存放没有初始化或者初始化为0的全局变量,一定是全局变量。

2:(.data):通俗来说(.data段)和(.bss)没有太大的区别,只是前者是存放未初始化或者初始化为0的全局变量,而后者是用来存放那些初始化不为0的全局变量。注意:两个都只是存放的全局变量

3:代码段:直观理解为函数堆叠而成的。

4:栈:栈用来存放局部的变量和函数参数,当一个函数用完这些局部的变量之后,栈里面的东西就会被释放出来,栈可理解为一个箱子,最先放进去的书本在最下面,若放箱子装满之后,最先取出的是最后放进去的书本,而最开始放进去的书本要最后才能取得出来。

5:堆:堆和栈最大的一个区别在于栈的空间在那个函数用完之后会自己释放,而在堆里面的内存空间必须要使用者自己释放,并且堆里面存放的内存是使用者自己申请的内存空间,列:用malloc申请的空间在用完之后应用free释放出来,否则会存在内存泄漏的问题产生。

6:宏定义:格式:#define 标识符 字符串。之后再函数中使用到标识符的地方全部用字符串代替

7:什么是条件编译:一般情况下代码的每一行都会被编译,但有时候需要在某些条件下对部分代码进行编译。

8:#和##的区别:#是把宏参数变为一个字符串,##是把两个宏参数连接在一起,注意只能连接两个宏参数

9:什么是联合体:在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。

10:结构体与联合体区别:联合体的各个成员共用内存,并应该同时只能有一个成员得到这块内存的使用权(即对内存的读写),而结构体各个成员各自拥有内存,各自使用互不干涉。所以,某种意义上来说,联合体比结构体节约内存





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值