C++类型萃取
C++类型萃取 C++ 类型萃取(Type Traits)是 模板元编程 的核心工具之一,用于在 编译期分析和操纵类型信息。它们常用于 泛型编程 中,帮助我们写出更通用、类型安全的代码,特别是在 STL、标准库实现、SFINAE、concepts 等地方广泛使用。 一、类型萃取的核心思想 通过模板结构体和偏特化机制,在编译期对类型进行判断、提取、转换,比如: 判断一个类型是不是...
C++类型萃取 C++ 类型萃取(Type Traits)是 模板元编程 的核心工具之一,用于在 编译期分析和操纵类型信息。它们常用于 泛型编程 中,帮助我们写出更通用、类型安全的代码,特别是在 STL、标准库实现、SFINAE、concepts 等地方广泛使用。 一、类型萃取的核心思想 通过模板结构体和偏特化机制,在编译期对类型进行判断、提取、转换,比如: 判断一个类型是不是...
自动推导变量类型,简化代码,增强可读性和维护性。
NULL为宏定义0,类型不安全;nullptr为类型安全的空指针常量。
C++常见内存错误 1. 野指针(Dangling Pointer) 指针指向已经被释放或无效的内存。 int* p = new int(10); delete p; *p = 5; // 使用了悬空指针,未定义行为 2. 内存泄漏(Memory Leak) 申请的堆内存未被释放,导致程序运行时内存不断增长。 void leak() { int* p = new int...
内存池 内存池(Memory Pool)*是一种*提前分配一大块内存、并在之后反复复用这块内存来分配/释放对象的技术,目的是为了提高性能、降低内存碎片、避免频繁调用 malloc/new 等昂贵操作。 一、为什么要用内存池 标准的 new / malloc 调用: 都涉及系统调用(如 sbrk, mmap),慢; 易产生碎片; 无法保证内存地址的连续性; 每次创建/...
对比malloc-free与new-delete malloc/free 与 new/delete 是 C++ 中两种动态内存分配和释放的机制,分别源自 C 和 C++ 语言。它们在底层实现、用途、语义和使用场景上有显著差异。 一、基本语法和用途 功能 malloc / free new / delete ...
malloc-free内存分配原理 C/C++ 中的 malloc/free(以及 new/delete)是动态内存分配的基础机制。在系统底层,它们通常基于操作系统提供的内存分配接口(如 brk/sbrk 或 mmap)来管理堆空间。 一、基本概念 操作 描述 malloc(size) 从...
内存映射 内存映射(Memory Mapping)是一种操作系统提供的机制,它允许把文件或设备中的内容映射到进程的虚拟内存空间中,从而使得程序可以像访问普通内存一样访问文件内容或硬件资源。这种机制广泛用于文件IO优化、进程间通信、设备访问等场景。 一、内存映射的基本概念 内存映射是指: 把一个文件或设备的内容直接映射到进程的虚拟地址空间,之后程序可以像操作内存一样,直接读写文件...
RAII RAII(Resource Acquisition Is Initialization)是 C++ 中一项非常重要的资源管理思想。它是 C++ 语言设计中自动管理资源的一种惯用方法,广泛应用于标准库(如 std::vector, std::unique_ptr, std::lock_guard)中。 一、RAII 定义 RAII(资源获取即初始化):将资源的生命周期绑定到对象...
从右往左读类型,结合指针、引用和数组符号,逐步理解复杂声明含义。