C和C++ 你必须知道的知识点

C和C++的知识浩如烟海,但是下面的知识点是我们一定要知道的,也是面试过程中大概率会问到的。这篇文章的内容我会不定期更新。

1.结构体对齐
这是面试中最常问的一个问题。下面是我多年前整理的一篇文章,讲解得十分详细。
http://tassardge.blog.163.com/blog/static/172301708200810955123227/

2.forward、move、左值和右值

3.如何用c++计算cache的容量
别小看这个问题,C++的一个重要特点就是能够发挥硬件的极致性能,而发挥硬件的极致性能就要充分利用缓存。可以参考下面这篇文章计算缓存容量。
https://stackoverflow.com/questions/19136846/write-a-program-to-get-cpu-cache-sizes-and-levels

4.下面这篇小文列举的问题,尤其是c++的部分
这个是左耳朵耗子面试的问题,很值得参考。
https://blog.csdn.net/u013693241/article/details/88071586

5.c++11的智能指针

6.堆和栈内存的区别
栈的内存分配效率极高,只要移动一下栈指针就完成了内存的分配,但是栈的容量是有限的,不适合分配大块内存。
堆会把内存块按照大小组织成一棵树,当我们分配内存的时候,堆会根据请求的内存大小查找内存树,返回合适大小的内存块。当我们释放内存的时候,内存块会被重新插入内存树。由此可见,堆的内存分配速度要比栈慢,但是堆可以分配大块内存。
另外,堆和栈地址的生长方向是相对的,这是因硬件平台而异的。有的平台上,堆是从高地址向低地址生长,栈是从低地址向高地址生长,例如x86平台;有的平台是反过来的。那么为什么栈和堆的地址是相对生长的呢?这是为了充分利用地址空间。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值