问题
stl用过哪些, vector的内存分配问题,vector和list的应用场景
堆和栈的分别,优缺点,堆的大小是多少,栈的大小是多少
#####栈区(stack)—> 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
####栈:栈是向低地址扩展的数据结构,是一块连续的内存的区域。
是栈顶的地址和栈的最大容量是系统预先规定好的,栈的大小是2M
(也有的说是1M,总之是一个编译时就确定的常数 ) ,如果申请的空间超过栈的剩余空间时,
将提示overflow。因此,能从栈获得的空间较小。
优点:
1.高速,在栈上分配内存是非常快的。
2.简单,栈对象有自己的生命周期,你永远不可能发生内存泄露。
因为他总是在超出他的作用域时被自动销毁了。
缺点:栈对象严格的定义了生命周期也是其主要的缺点,栈对象的生命周期不适于Objective-C的引用计数内存管理方法。
######堆区(heap) —> 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
###堆:堆是向高地址扩展的数据结构,是不连续的内存区域。
###这是由于系统是用链表来存储的空闲内存地址的,
###自然是不连续的,而链表的遍历方向是由低地址向高地址。
###堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
优点:可以自己控制对象的生命周期。
缺点:需要程序员手动释放,容易造成内存泄漏。
虚函数指针讲一下
new会做些什么工作
#######################delete一个派生类会调用基类的析构函数吗(基类的析构函数不是虚函数)
##############################引用传参和值传参,怎么样通过改变函数传入的实参改变实体
######################################################tcp三次握手干了啥
sort函数,对一个用于存储自定义类型的list排序,这个自定义类型需要提供什么
线程的问题,为什么要有线程,还有线程加锁之类的
编译和链接都在干什么
c++里的多态,重载是编译时吗?继承的多态怎么实现?虚指针的大小?普通函数里有虚指针吗?如果是一个普通的函数什么时候地址绑定?(这里