- 博客(7)
- 收藏
- 关注
原创 移动构造函数
在 C++ 中,**移动构造函数(Move Constructor)** 是 C++11 引入的重要特性,用于高效转移资源(如动态内存、文件句柄等)的所有权,避免不必要的深拷贝,从而提升性能。| **参数类型** | `const MyClass&` | `MyClass&&` || **适用场景** | 左值对象 | 右值对象(临时对象) |- **兼容性**:同时提供拷贝和移动构造函数,以支持灵活的资源管理。
2025-02-21 13:30:59
272
原创 HTTP和tcp的选择
**开箱即用的功能**:持久连接(Keep-Alive)、缓存控制(Cache)、内容协商(Accept头)、压缩(gzip)、身份认证(Cookie/Token)等。| **方面** | **HTTP** | **直接使用 TCP** |基于 TCP 构建,定义了 **结构化请求/响应模型**(如方法、URL、状态码、头部、正文等),隐藏了 TCP 的复杂性。
2025-02-20 09:30:44
430
原创 移动构造函数
移动构造函数(Move Constructor)是 C++11 引入的重要特性,用于高效转移资源(如动态内存、文件句柄等)的所有权,**避免不必要的深拷贝**,提升程序性能。- **异常安全**:标记为 `noexcept`,否则某些标准库操作(如 `std::vector` 扩容)可能回退到拷贝而非移动。2. **置空原对象**:将原对象的资源指针设为 `nullptr`(或等效操作),确保其析构时不会释放已转移的资源。- **支持移动语义**:与 `std::move` 结合使用,显式触发资源转移。
2025-02-15 22:55:46
420
原创 可变参数模板
可变参数模板(Variadic Templates)是 C++11 引入的核心特性之一,允许模板接受**任意数量、任意类型**的参数。可变参数模板通过 `...` 声明参数包(**Parameter Pack**),支持在模板参数、函数参数或类模板中使用。void myFunction(Args... args) { // args 是值参数包。
2025-02-15 14:10:02
367
原创 查找界面窗口通信
**与进程交互**:通过 `OpenProcess`、`ReadProcessMemory`、`WriteProcessMemory` 或 `SendMessage`。1. **查找窗口**:使用 Windows API 的 `FindWindow` 或 `EnumWindows` 查找目标窗口。2. **获取进程 ID**:通过 `GetWindowThreadProcessId` 获取窗口对应的进程 ID。- **查找窗口**:使用 `FindWindow` 或 `EnumWindows`。
2025-02-15 12:16:50
675
原创 共享内存空间
共享内存本身并不属于某个进程的栈(Stack)、堆(Heap)或全局/静态存储区,而是位于**操作系统内核管理的独立内存区域**。- **虚拟地址映射**:每个进程通过系统调用(如 `shmget` + `shmat` 或 `mmap`)将共享内存映射到自己的虚拟地址空间。- **生命周期**:共享内存的生命周期由操作系统管理,除非显式删除(如 `shm_unlink`),否则会持续存在。- **都不属于**。- **不一定**。| **堆(Heap)** | 动态分配的内存(如 `new`) |
2025-02-15 11:08:21
294
原创 qt中使用udp注意事项
*线程亲和性**:QObject实例(如QTcpSocket)属于创建它的线程。所有事件处理(如信号、槽、事件循环)应在该线程内进行。- **直接跨线程调用风险**:在其他线程直接操作对象可能导致竞态条件或未定义行为,因Qt的事件循环非线程安全。在起线程创建对象时,不能通过另一个线程去操作socket的start等函数。
2025-02-13 08:40:29
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人