嵌入式面试题准备

1、指针和数组的区别

指针,存储的是一个地址值

数组,存储的是数组变量类型的值,此值可以修改,但是数组的地址不能改


2、malloc、free和new、delete的区别和联系

   1)malloc和free是C/C++的标准库函数,new和delete是C++的运算符;

   2)malloc和free只能操作基本数据类型,不能创建和销毁类对象,因为需要调用到构造函数和析构函数,但是new和delete就可以;

   3)new和delete因为是C++的运算符,需要编译器支持,malloc和free只需要添加头文件;

   4)用new申请内存时,不需要指定内存大小,因为编译器会根据类型信息自动分配大小,malloc需要指定内存大小;

   5)new创建对象的过程(先调operate new函数,申请内存,底层其实就是malloc实现的,然后通过构造函数把申请到的内存充分给成员),delete释放的过程(先调析构函数,然后调用operate delete函数释放内存,底层也就是free实现的)

注:【1】当将变量free或delete后需要将变量指向NULL,否则指向的位置不确定,而且再次free或delete时会报段错误;

       【2】malloc分配内存时,需要判断内存分配是否成功,不成功会返回NULL,new申请不成功时,会直接抛出异常;

【3】C++存储区域有五块,堆、栈、静态存储区/全局存储区、常量存储区、自由存储区,C中没有自由存储区,因为这块是给new分配内存的;


3、*p++ 相当于*(p++),先解引用,再地址加1,所以

数组{1,2,3,4} 经过*p++=*p++;的结果是{2,2,4,4}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值