苏嵌作业3.1

内存管理&预处理,结构体

question1:预处理的概念是什么?

answer:




question2:宏该如何使用?

answer:(1)无參宏定义



需要注意的是:后面的表达式的参数要用括号。

(2)带參宏定义:




注意事项:







question3:结构体如何使用?

answer:




结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合。




question4:结构名和结构变量的区别?

answer:


question5:define和typedefine的区别?

answer:






question6:位域(位段)的概念及如何使用?

answer:







question7:每种内存分别存放什么类型的数据?

answer:

(1)bass段用来存放那些没有初始化和初始化为0的全局变量。

(2)data段用来存放那些初始化为非零的全局变量。

(3)rodata段用来存放常量数据。

(4)text(代码段)存放代码和部分整数常量,这个段是可以执行的。

(5)栈(stack)存放临时变量和函数参数。

(6)堆(heap)最灵活的一种内存,生命周期完全由使用者控制。

malloc:用来分配指定大小的内存。

realloc:用来调整/重新分配一块存在的内存。

free:用来释放不再使用的内存。



question8:常见的内存错误及对策?

answer:

(1)内存分配未成功,却使用了它

解决办法:在使用之前检查指针是否为NULL

(2)内存分配虽然成功,但是尚未初始化就使用它

解决办法:记住赋初值

(3)内存分配成功并且已经初始化,但操作越过了内存的边界

解决办法:while循环次数不能搞错

(4)忘记了释放内存,造成了内存泄漏

解决办法:用free释放

(5)释放了内存却继续使用它



question9:常见的段错误以及调试方法?

answer:访问了错误的内存段会产生段错误;

方法一:利用gdb逐步查找段错误

方法二:分析core文件

方法三:段错误时启动调试

方法四:利用backtrace和objdump进行分析




question10:指针与数组之间的对比?

answer:

区别一:数组在静态存储区或栈上创建,地址容量不能改变,只能改变内容;指针指向任意内存块,灵活多变

区别二:不能对数组名进行直接复制与比较,指针可以

区别三:sizeof可计算出数组的容量,指针的却不行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值