- 如何获得结构成员相对于结构开头的字节偏移量:offsetof(S,x);浮点数的值如何比较大小?不能直接用是否相等的方式比较两个数是否相等,只能用两个数相减,然后是否符合某个精度。引用传递和指针传递是不同的:任何对于形参引用的操作都会通过一个间接寻址的方式操作到主调函数中的相关变量。而指针传递的话,即使在被调函数中改变指针地址,也无法应用到主调函数中的相关变量。动态建立对象:先执行operator new ,在内存中查找一块合适的地址,然后调用类的构造函数构造对象。调用者如何调用被调函数:使用Call指令调用被调函数,然后将下一条指令压入栈中,待该函数处理完毕,再将这下一条指令进行出栈。C++中提供了explicit关键字,在构造函数声明的时候加上explicit关键字,能够禁止隐式转换。一个类对象的地址就是类所包含的这一片内存空间的首地址。所有的函数都是存放在代码区的,不管是全局函数还是成员函数又或者是静态函数。所以,类的大小由成员变量所决定。静态成员函数与一般成员函数的区别就在于:静态成员函数没有this指针,因此不能访问非静态数据成员。且this指针只能在成员函数中使用,全局函数,静态函数都不能使用this指针。this指针是在成员函数开始执行前创建的,在成员的执行结束后清除。delete的本质:为被释放的内存调用一个或多个析构函数。然后,释放内存。空类的大小:为了让对象的实例能够相互区别。并且每个实例都是独一无二的,所以空类的大小为1. 其空类的实例的大小也为1.静态成员不占用类的大小。其存放在静态存储区。当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。弱引用指针与普通指针的一个比较大的区别就是:弱引用能检测到所管理的对象是否已经被释放,从而避免非法访问内存。RALL(Resource Acquisition is Initialization):资源获取即初始化。也就是在构造函数中申请分配资源,在析构函数中申请释放资源。即使是同一个值的Integer对象,那么也是生成不同的对象。所以通过 Map 做了映射,不管你 new 多少个 Integer 出来,这多个 Integer 都会被映射为同一个 Integer,从而保证即使超出 Integer 缓存范围时,也只有一把锁。定义:减少常见的错误,能够更快的定位错误,提升运行性能。永远不要在用ranged-for的时候修改容器自身。说不要判断this 为nullptr,这是UB行为。不要判断对象的引用是nullptr,这是UB行为。永远认为引用所指向的对象是一个存在的对象。避免在switch语句中使用default不要返回裸指针,类似于:int *get_value();优先用栈而不是堆
55.[解析c++中函数重载的实现原理](https://blog.csdn.net/qq_40840459/article/details/78510939)55. const 和 define的区别 56. C++11的新特性 60.1 智能指针 60.1_1 智能指针的作用 60.1_2 智能指针的理解 60.1_3 智能指针的使用 60.1_4 智能指针存在相互引用的问题,如何解决? 60.1_5 智能指针的本质? 60.1_6 std::weak_ptr如何强制类型转换为std::shared_ptr 61. c++源文件从文本到可执行文件经历的过程(gcc编译的过程) 62.请你回答一下malloc的原理,另外brk系统调用和mmap系统调用的作用分别是什么? 62.1 new和malloc的区别 62.2 new的底层实现
62.2_1 new和delete的实现原理, delete是如何知道释放内存的大小的?
62.2_2、new分配的内存是虚拟内存还是物理内存
63.树的储存
66.1拷贝构造和移动构造 66.2 什么情况下必须使用拷贝构造函数 ?string类的拷贝构造函数 66.3 拷贝构造函数 66.3 左值与右值的区别- STL的基本组件
- 递归太深有什么影响?请你谈谈 C++内存模式堆内存和栈内存的区别?重载和重写的区别DFS和BFS算法select和epoll区别?它们算同步还是异步io,同步异步区别在哪里
- HashMap的面试题。
- extern“C”{}有什么用?static的作用
85.vector和list区别,resize和reserve区别,erase底层
Vector
list
map
88.程序编译和链接了解吗,有什么作用?
- 移动构造函数在何时使用?C++多重继承会带来什么问题?(菱形继承)
- 结构体和类的区别(struct与class的区别)?
- 哈希算法原理?mutable和volatile是啥呀?vector的resize和reserve有什么不同啊?malloc是如何实现的(malloc的底层实现原理)?
101.0 内存相关图例
101.1 内存的管理方式
101.2 在Linux下是如何使用malloc的?3 malloc管理内存的方式智能指针中的强指针和弱指针。Qt的智能指针指针数组的使用?
111.c语言函数参数的入栈顺序为从右向左的原因?
113.函数的调用栈是怎么实现的?32位和64位指的是一个什么样的概念
118.数据结构中数组和链表的区别C++ move用法
129.1 std::move的底层原理移动语义和完美转发
131.结构体对齐方式、意义
135.常量指针和指针常量区别
136.typedef和define区别string的底层原理虚继承的作用
147.STL数据结构集合C语言如何实现面向对象编程alloca ,malloc,calloc,realloc,free
150.stdcall和cdecl的区别?迭代器失效的几种情况布隆过滤器的作用空指针的深入了解STL源码中的traits模板
155_1. 函数模板与类模板的区别extern与static的区别声明和定义的区别STL集锦
158_1. priority_queue重写C函数
159_1.重写strcpy函数
159_2. memcpy的重写阻塞与非阻塞的区别内联函数与宏的区别大端模式与小端模式
163.volatile、mutable和explicit关键字的用法static的作用const关键字的作用new的工作原理
167.delete的工作原理malloc的实现原理malloc、realloc、calloc的区别函数体内初始化与函数列表初始化的区别对象复用 和零拷贝技术函数参数的压栈顺序C++中将临时变量作为返回值时的处理过程const char* 与char* 与string的相互转化
174_1. string转const char*
174_2. const char* 转string,直接赋值即可
174_3. string 转char*
174_4. char* 转string
174_5. const char* 转char*
174_6. char* 转const char*,直接赋值即可类对象的大小受哪些因素影响?C++中的new、operator new与placement new内存管理相关笔记前置声明和include 的区别与作用C语言free()函数如何释放动态分配的内存空间?可以在C++的成员函数里调用delete this吗?
180_1. 在类的析构函数中调用delete this?
180_2. 在实际测试中,出现的情况?
180_3. 对于this指针的描述?
180_4.对this指针的注意事项?成员函数与非成员函数?



