面向对象程序设计知识点【计算机复试问答】

指针与内存空间

1.程序运行时存储空间的布局?各存放什么?

代码段——存放程序执行代码

静态数据区

​ 数据段——已初始化全局变量、静态变量、常量

​ BSS段——未初始化的全局变量

动态数据区

​ 堆区:malloc、new动态分配的内存

​ 栈区:编译器自动分配,参数、局部变量(通过栈顶指针+偏移访问)

2.你对指针是怎么理解的?

指针就是指向地址的变量,指针所在内存地址里存的值xx就是它所指向内存区域的起始地址;

指针在32位机器中占4字节空间

数组名的本质就是指针

优点:提高效率,动态内存分配 缺点:安全性可读性

3.C++中指针和引用有什么区别?

引用的本质就是变量的一个别名,声明时必须初始化且不能为空

引用不用分配内存区域,i++和指针有区别,ptr+1表示指向的地址向后挪一个单位(如int型就是4字节)

作为参数传递时,都对实参有影响

4.malloc/free new/delete 的区别?

malloc在堆区;new在专门的自由存储区

返回值——new是对象类型的指针;malloc是void* 要显式转换

是否要指定内存大小——malloc要

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值