Pro.bounds: Bounds safety profile

Pro.bounds:边界安全群组

This profile makes it easier to construct code that operates within the bounds of allocated blocks of memory. It does so by focusing on removing the primary sources of bounds violations: pointer arithmetic and array indexing. One of the core features of this profile is to restrict pointers to only refer to single objects, not arrays.

此规则群组使构建在分配的内存块范围内运行的代码更加容易。它通过专注于消除违背边界规则的主要来源来做到这一点:指针算术和数组索引。此规则群组的核心功能之一是将指针限制为仅引用单个对象,而不是数组。

We define bounds-safety to be the property that a program does not use an object to access memory outside of the range that was allocated for it. Bounds safety is intended to be complete only when combined with Type safety and Lifetime safety, which cover other unsafe operations that allow bounds violations.

我们将边界安全性定义为程序不通过对象访问为其分配的范围之外的内存的属性。仅当与类型安全性和生命周期安全性结合使用时,边界安全性才是完整的,后者包含允许违反边界的其他不安全操作。

Bounds safety profile summary:

边界安全群组概要:

  • Bounds.1: Don't use pointer arithmetic. Use span instead: Pass pointers to single objects (only) and Keep pointer arithmetic simple.

    Bound.1:不要使用指针算法。改用span:将指针传递给单个对象(仅),并使指针的运算保持简单。

  • Bounds.2: Only index into arrays using constant expressions: Pass pointers to single objects (only) and Keep pointer arithmetic simple.

    Bounds.2:仅使用常量表达式对数组进行索引:(仅)将指针传递给单个对象,并使指针的运算保持简单。

  • Bounds.3: No array-to-pointer decay: Pass pointers to single objects (only) and Keep pointer arithmetic simple.

    Bounds.3:没有数组到指针的退化:将指针传递给单个对象(仅),并使指针的运算保持简单。

  • Bounds.4: Don't use standard-library functions and types that are not bounds-checked: Use the standard library in a type-safe manner.

    Bounds.4:不要使用未经边界检查的标准库函数和类型:以类型安全的方式使用标准库。

Impact(影响)

Bounds safety implies that access to an object - notably arrays - does not access beyond the object's memory allocation. This eliminates a large class of insidious and hard-to-find errors, including the (in)famous "buffer overflow" errors. This closes security loopholes as well as a prominent source of memory corruption (when writing out of bounds). Even if an out-of-bounds access is "just a read", it can lead to invariant violations (when the accessed isn't of the assumed type) and "mysterious values."

边界安全性意味着对对象(尤其是数组)的访问不会超出对象的内存分配范围。这消除了许多隐患和难以发现的错误,包括(著名的)“缓冲区溢出”错误。这可以消除安全漏洞以及内存损坏的主要根源(超出限制时)。即使越界访问只是“读取”,它也可能导致违反不变量(当访问的类型不是假定的类型时)和“神秘的价值”。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile

新书介绍

《实战Python设计模式》是作者最近出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

C++核心准则​Pro.bounds:边界安全群组相关推荐

  1. 深度学习框架下群组行为识别算法综述

    源自:电子学报       作者:邓海刚  王传旭  李成伟  林晓萌 摘 要 群组行为识别目前是计算机视觉领域的一个研究热点,在智能安防监控.社会角色理解和体育运动视频分析等方面具有广泛的应用价值. ...

  2. (保守群组测试 非保守群组测试 二次重复测试 自适应二次重复测试)四种群体测试的C++代码

    目录 原理 保守组检测 非保守组检测 二次重复测试 自适应二次重复测试 四种测试方法的核心代码 保守群组测试 非保守群组测试 二次重复测试与自适应二次重复测试 测试代码 参考文献 原理 假设该病在人群 ...

  3. C++核心准则SL.con.4:不要对不能直接拷贝的参数使用memset或memcpy

    SL.con.4: don't use memset or memcpy for arguments that are not trivially-copyable SL.con.4:不要对不能直接拷 ...

  4. php 语法 条件变量,C ++核心准则:注意条件变量的陷阱

    今天,我写了一篇关于条件变量的恐怖文章.您应该意识到条件变量的这一问题.C ++核心准则CP 42仅声明:"不要无条件等待". 等待!条件变量支持一个非常简单的概念.一个线程准备一 ...

  5. modbus软件开发实战指南_C++核心准则?GSL:指南支持库

    GSL: Guidelines support library GSL:指南支持库 The GSL is a small library of facilities designed to suppo ...

  6. 开源压缩算法brotli_Google的Brotli压缩算法,C ++核心准则以及更多新闻

    开源压缩算法brotli 在本周的开源新闻综述中,我们将介绍Google的Brotli压缩算法,适用于GitHub的Classroom,C ++ Core Guidelines等! 2015年9月20 ...

  7. Linux 的账号与群组(转)

    Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...

  8. 陈桥五笔用户编号获取_用户群组分析

    目录: 项目介绍 定义阐述 分析流程 总结展示 一.项目介绍 背景: 当我们在做用户分析时,会遇到这样的一个问题,一个用户使用APP时,会留下一连串的使用数据,可能是一月份的购买了1次,二月份购买了2 ...

  9. FISCO BCOS 2.0发布:新增群组架构克服吞吐瓶颈

    今日,FISCO BCOS开源社区正式对外发布FISCO BCOS的2.0版,该版本在可扩展性.性能.易用性.隐私隔离等方面均取得突破性进展,其新增的群组架构方案,可以让企业间像拉微信群一样快速组链, ...

  10. 北京招聘 | 百度智能生活事业群组小度科技招聘对话系统算法实习生、工程师...

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 百度 百度智能生活事业群组(Smart Living Group,简称 S ...

最新文章

  1. 计算机优化英语,英语对计算机专业的重要性及如何提高英语水平
  2. DevExpress的TreeList怎样设置数据源,从实例入手
  3. progressIndicator in SalesPipeline
  4. ftp服务器生成文件,ftp服务器自动生成文件
  5. 【牛客挑战赛38:E】七星阵(极角排序+dp+思维)
  6. Fiddler 4监听手机数据
  7. 从CVPR2019 看计算机视觉最新趋势
  8. Kindle Paperwhite安装PDF阅读器Koreader
  9. php数字验证码代码,php中文字母数字验证码实现代码
  10. 工作中常用的英语缩写
  11. dnf超时空漩涡副本路线流程图_DNF超时空漩涡怎么打 队伍配置攻坚路线兵营boss攻略...
  12. 中标麒麟 NeoKylin-SDK 里都有哪些库文件
  13. 门徒Disciples体系:致力于成为“DAO世界”中的集大成者。
  14. ASCII码对照表【2022年汇总】
  15. wps怎么将图片嵌入文字里_wps文档怎么把图片嵌入
  16. 实时守护重要物件,异常情况及时推送,VOC智能保管箱G300上手
  17. HEIF 和 HEVC 研究
  18. JXTA promotion, 2 install Demo Application
  19. 【翻译】构建安全的云原生基础设施的GitOps顶级策略
  20. 最新Ceph安装工具:Cephadm介绍与使用

热门文章

  1. java 水晶按钮_水晶按钮制作 jsp function调用java方法
  2. 醋醋SEO基础入门教程_seo入门基础知识
  3. win10升级助手_win7怎么升级win10?腾讯电脑管家升级win10教程
  4. 狂神 MyBatis
  5. centos系统中perl进程病毒占用大量网络流量导致网络瘫痪的问题分析及解决方案
  6. Java--静态代理和动态代理
  7. qlearning走迷宫matlab,GitHub - MrMiilk/qlearning_robot: 用 qlearning 算法走迷宫
  8. 麻雀算法(SSA)优化的BP神经网络预测,SSA-BP回归预测,多输入单输出模型。
  9. python-pika
  10. helm 错误 Error: INSTALLATION FAILED: must either provide a name or specify --generate-name