问题

2019-12-30  本文已影响0人  人不知QAQ

stl用过哪些, vector的内存分配问题,vector和list的应用场景

堆和栈的分别,优缺点,堆的大小是多少,栈的大小是多少

#####栈区(stack)—> 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈

####栈:栈是向低地址扩展的数据结构,是一块连续的内存的区域。

是栈顶的地址和栈的最大容量是系统预先规定好的,栈的大小是2M

(也有的说是1M,总之是一个编译时就确定的常数 ) ,如果申请的空间超过栈的剩余空间时,

将提示overflow。因此,能从栈获得的空间较小。

优点:

1.高速,在栈上分配内存是非常快的。

2.简单,栈对象有自己的生命周期,你永远不可能发生内存泄露。

因为他总是在超出他的作用域时被自动销毁了。

缺点:栈对象严格的定义了生命周期也是其主要的缺点,栈对象的生命周期不适于Objective-C的引用计数内存管理方法。

######堆区(heap) —> 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。

###堆:堆是向高地址扩展的数据结构,是不连续的内存区域。

###这是由于系统是用链表来存储的空闲内存地址的,

###自然是不连续的,而链表的遍历方向是由低地址向高地址。

###堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

优点:可以自己控制对象的生命周期。

缺点:需要程序员手动释放,容易造成内存泄漏。

虚函数指针讲一下

new会做些什么工作

#######################delete一个派生类会调用基类的析构函数吗(基类的析构函数不是虚函数)

##############################引用传参和值传参,怎么样通过改变函数传入的实参改变实体

######################################################tcp三次握手干了啥

sort函数,对一个用于存储自定义类型的list排序,这个自定义类型需要提供什么

线程的问题,为什么要有线程,还有线程加锁之类的

编译和链接都在干什么

c++里的多态,重载是编译时吗?继承的多态怎么实现?虚指针的大小?普通函数里有虚指针吗?如果是一个普通的函数什么时候地址绑定?(这里

上一篇 下一篇

猜你喜欢

热点阅读