C++ 核心指南之资源管理(中)分配和释放
C++ 核心指南之资源管理(中)分配和释放C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C++ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。
这份指南侧重于接口、资源管理、内存管理、并发等 High-level 主题。遵循这些规则可以最大程度地保证静态类型安全,避免资源泄露及常见的错误,使得程序运行得更快、更好。
R.alloc: 分配和释放
R.10: 避免使用 malloc() / free()
R.11: 避免显式调用 new / delete
R.12: 显式资源分配的结果应立即给到资源管理对象
R.13: 在一条语句中,最多只能有一个显式资源分配
R.14: 避免使用 [] 参数,用 span 替代
R.15: 分配/释放操作要成对重载
R.10: 避免使用 malloc() / free()malloc() / free() 不支持构造、析构,不要和 new / delete 混 ...
C++核心指南之资源管理(上)概述
C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C++ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。
这份指南侧重于接口、资源管理、内存管理、并发等 High-level 主题。遵循这些规则可以最大程度地保证静态类型安全,避免资源泄露及常见的错误,使得程序运行得更快、更好。
R. Resource Management本章的基本目标是:不产生资源泄漏,不持有不再需要的资源。资源是指需要申请和(显式或隐式)释放的任何东西,如内存、文件句柄、套接字、锁等。如果一个实体“拥有”资源,则意味着该实体负责释放资源。在个别场景下,资源泄露是可以接受的。例如有足够的内存处理最大的输入,或者出于性能优化考虑,只申请不释放,本章的规则不适用于这类特殊情况。
资源管理规则总结
R.1: 通过资源句柄和 RAII 自动管理资源
R.2: 在接口中,裸指针只用来表示单个对象
R.3: 裸指针(T*)不拥有资源
R.4: 裸引用(T&)不拥有资源
R.5: 优先使用对象 ...
Kernel Memory 入门系列:Kernel Memory Service
Kernel Memory 入门系列:Kernel Memory Service在 Kernel Memory 的 GitHub 仓库中有一个单独的项目 Service , 用于提供独立的Kernel Memory OpenAPI 服务。可以用于独立的部署后台,也可以为其他语言提供接口调用服务。
1. 初始化使用 Kernel Memory Service 需要先下载该项目的源码。使用Git Clone 命令下载源码到本地即可。
1git clone https://github.com/microsoft/kernel-memory.git
然后打开/service/Service目录,根据操作系统选择执行使用setup.sh或者setup.cmd,就可以进行快速的初始化了。
也可以直接执行dotnet run setup命令进行初始化。
这个过程会调用初始化服务,将所有选择的配置项都存储到appsettings.Development.json文件中。
当然也可以直接通过修改appsettings.json文件,来修改配置项。该文件中包含详细的配置说明。
这其 ...