- 博客(9)
- 资源 (2)
- 收藏
- 关注
原创 C++ 大小端
本文介绍了计算机系统中的大小端字节序概念及其判断方法。小端字节序将数据的低位存储在低地址,而大端字节序则相反。通过联合体和指针两种方法可以判断系统字节序,如利用联合体共享内存特性或指针类型转换检查首字节值。不同架构处理器(如x86小端、PowerPC可配置、ARM默认小端但可切换)的字节序差异可能导致跨平台数据解析错误和文件兼容性问题。解决方法包括网络通信中使用标准字节序转换函数(htonl/ntohl等)和文件处理时自定义字节序转换函数。这些策略确保了不同平台间数据传输和文件读写的正确性。
2025-07-24 00:57:37
1282
原创 C/C++内存对齐规则(结构体、联合体、类)
本文详细介绍了C/C++中内存对齐规则,重点分析了结构体、联合体和类的内存占用情况。在32位和64位系统中,基本数据类型如int、long、double等所占字节数存在差异,其中long和long double的字节数在不同系统中有明显区别。结构体大小计算需考虑成员对齐和填充字节,通过#pragma pack可设置对齐字节数。类的大小受虚函数、静态成员等影响,空类占1字节。联合体的大小等于最大成员的大小。文章通过多个示例详细演示了不同数据类型和结构的内存占用计算过程,并提供了参考链接。
2025-07-22 00:27:48
934
原创 C/C++ static的作用
本文总结了C/C++中static关键字的用法。在C语言中,static修饰全局变量和函数可限制其作用域为当前文件。C++在此基础上扩展了静态成员变量和静态成员方法的概念,静态成员属于类而非对象,静态方法只能访问静态成员。静态局部变量在函数内定义但生命周期贯穿整个程序。所有静态变量都在程序启动时创建,在数据段或BSS段分配存储空间,生命周期持续到程序结束。使用static可以减少全局变量滥用,但需注意线程安全问题。头文件中不应定义全局变量以避免重复定义。
2025-07-20 16:48:49
433
原创 详解C/C++中的getMemory()函数
本文分析了C/C++中getMemory()函数的常见错误及解决方案。主要内容包括: 指针传递问题:传递指针副本导致无法修改原指针,应使用二级指针或指针引用 局部变量返回:返回局部数组指针会导致悬垂指针,应使用动态分配或static修饰 内存泄漏:malloc分配内存后未释放,需添加free() 悬空指针:释放内存后未置空,应设置指针为NULL 常量字符串修改:尝试修改字符串常量导致段错误,需使用动态分配 每个案例都给出了错误原因分析和正确的修改方案,包括使用二级指针传参、动态内存管理、static变量等解
2025-07-20 00:59:22
406
原创 C++ 内存池
内存池是一种高效的内存管理技术,通过预分配大块内存并按需分配小块来提高性能。其主要优势包括减少系统调用、降低内存碎片、提高缓存命中率、降低分配/释放开销、减少内存泄漏风险等。内存池工作原理包括预分配内存、按需分配、内存回收和管理优化。文章详细介绍了内存池的C++实现,包含头文件设计、初始化、节点分配/回收和销毁等核心功能,并提供了测试代码验证其复用性。这种技术特别适用于嵌入式系统、游戏引擎等性能敏感场景,能够显著提升内存管理效率。
2025-07-10 15:30:59
508
原创 死锁的概念/产生/规避/调试
摘要 死锁是多个线程因竞争资源而互相等待的系统停滞现象,产生死锁需要满足互斥、持有等待、不可剥夺和循环等待四个必要条件。常见场景包括锁的重复获取和多个锁顺序不一致。规避方法包括使用无锁编程、递归锁、同时获取多锁等策略。调试方面,Windows平台可使用Visual Studio的调试工具,Linux平台可使用Valgrind的Helgrind工具或GDB进行检测。
2025-07-06 17:25:30
1731
原创 C++ 实现跨平台线程
文章摘要: 本文展示了多线程编程在Windows和Linux平台下的实现方法,并介绍了C++11标准线程库的使用。第一部分通过代码示例分别演示了Windows API(CreateThread)和Linux pthread库创建线程的方式。第二部分展示了C++11 thread类的使用方法,包括线程创建、管理和状态检测。第三部分提供了一个跨平台的线程封装类设计,通过模板和Platform-Specific实现(线程函数包装器、ThreadData结构体)实现统一接口。最后给出Windows和Linux平台的
2025-07-02 22:36:12
350
原创 C++ Thread基础篇
本文介绍了C++11标准中std::thread的基本用法和特性。主要内容包括:1) std::thread与pthread_create的对比,突出std::thread在资源管理、跨平台性和易用性方面的优势;2) thread构造函数的多种使用方式,包括传递参数和lambda表达式;3) 常用方法如join/detach/get_id等;4) detach与join的主要区别,并通过示例说明detach线程的执行时机问题及使用原子变量进行优化的方案。文章通过代码示例展示了C++多线程编程的基本操作,为初
2025-07-02 16:36:50
1683
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1