每日知识点2019.7.24
线程安全和线程不安全?
1.线程安全:多线程访问时,采用加锁机制,每次只允许一个线程读取数据,保证了数据不被污染。
2.线程不安全:不采用加锁,多个线程可能会修改数据,这样的到的数据就是脏数据。
c++内存泄漏的原因?
1.new和delete没有配套
2.释放对象数组时使用delete,没有使用delete[ ]
3.父类的析构函数没有写成虚函数
4.没有正确释放类的嵌套指针
堆栈溢出的原因?如何解决?
1.局部变量过大
2.函数的调用次数过多(因为每次调用形参和局部变量都要重新压栈)
解决:更改栈的大小或将局部变量前加static,使其变成静态变量,或者将变量变成指针
c++标准库和vector?
c++标准库共有50个标准头文件,分为10类(<iostream>...)
vector是一个动态数组,内存连续,因此每次的删除、插入都会造成内存的移动,很慢,但是适合于经常访问的场合。
c++11新特性?
1.auto 自动识别变量类型
2.decltype 返回值是变量类型,可用作变量的别名delctrype(expression)
- 如果ex是标识符或类的成员的访问,返回值就是ex的类型
- 如果ex是一个左值,那么返回值就是ex的类型后面加&(例:int a = 10;decltype(a) ==>int&)
- 如果ex是一个函数的调用,那么返回值就是函数的返回值类型
3.nullptr 空指针(解决了NULL的二义问题)
NULL 0/空指针
4.lambda表达式[ ]( ){ }
vector和list的区别?
vector 动态数组 内存连续 经常访问时使用
list 双向链表 内存不连续 经常插入/删除使用
C语言函数的调用过程?
1.从栈内存中分配空间
2.参数入栈
3.进行运算
c++的基本数据类型和派生类类型?
1.int 整型
2.float 浮点型(double)
3.bool 逻辑型
4.char 字符型
5.void 控制型
修饰符:long、short、signed、unsigned
查看9道真题和解析