1. 结构体大小计算需要考虑字节对齐问题,一般按照成员变量类型中最大的对齐字节数进行对齐。
2. OFFSET宏用于计算结构体中一个成员的内存偏移量,通过将成员变量的地址减去结构体的地址得到。
3. 内存对齐问题可以通过编译器提供的编译选项进行控制,如#pragma pack()等。
4. vector和map是C++中的容器,vector用于存储线性表,map用于存储键值对。
5. 构造函数用于初始化对象,析构函数用于释放对象资源。移动构造函数用于移动对象而不复制。
6. 虚函数、纯虚函数和虚函数表是C++实现多态的关键技术。
7. 虚函数表是一个数组,每个元素都指向一个虚函数的地址。
8. 函数回调是通过函数指针实现的,将函数指针作为参数传递给另一个函数,然后在该函数内部调用函数指针所指向的函数。
9. C++的四种类型转换包括static_cast、dynamic_cast、const_cast和reinterpret_cast。
10. C++智能指针包括shared_ptr、unique_ptr和weak_ptr,用于自动管理内存资源。
11. strcpy和strncpy的区别在于strcpy不会检查目的地址的空间大小,而strncpy会检查。手写strcmp实现字符串比较,memcpy实现内存拷贝。
12. 堆栈溢出和内存泄漏是常见的内存问题,可以通过代码审查、单元测试和内存泄漏检测工具进行排查和避免。
13. 数据结构包括线性表、树、图等,用于组织、存储和管理数据。
14. 迭代器是STL容器的遍历工具,常见容器的底层实现包括vector、list、deque等。
15. 平衡二叉树的特点是左右子树高度差不超过1,用于实现高效的查找、插入和删除操作。
16. 变量声明和定义的区别在于声明只是告诉编译器变量的类型和名字,而定义则是为变量分配内存空间。extern关键字用于声明一个全局变量。
17. 多态是指一个接口可以有多种实现,通过虚函数和虚函数表实现。
18. C++继承关系包括单继承、多继承和虚继承,用于实现代码重用和扩展。
19. C/C++区别在于C++增加了面向对象、模板和异常处理等特性。
20.