首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏浮躁的喧嚣

    swift 内存安全

    Swift 会阻止你代码里不安全的行为。 例如,Swift 会保证变量在使用之前就完成初始化,在内存被回收之后就无法被访问,并且数组的索引会做越界检查 Swift 保证同时访问同一块内存时不会冲突,因为 Swift 自动管理内存,所以大部分时候你完全不需要考虑内存访问的事情 而如果你的代码确实存在冲突,那在编译时或者运行时就会得到错误 内存访问冲突 当你有两个访问符合下列的情况: 至少有一个是写访问 它们访问的是同一个存储地址 它们的访问在时间线上部分重叠

    30110编辑于 2023-11-22
  • 来自专栏Swift社区

    Swift | 内存安全

    简介 一般来说,Swift 会阻止代码中的不安全行为。例如,Swift 会保证变量在被使用前已经初始化,在释放某变量后其内存也会变得不可访问,以及检查数组索引是否存在越界错误。 在这个例子中,主要看你是想要原来的总价格还是更新后的总价格,555和320 都可能是正确答案。也就是说,在你解决冲突访问之前,你得先要搞清楚你要的是什么。 编译器可以证明这样是内存安全的,这两个存储的属性不会以任何方式交互。 在保护内存安全时,限制结构体属性的重复访问并非是必须的。 内存安全是理想的保证,但是独占访问是一个比内存安全更严格的要求--这意味着即使有一些代码违反了独占访问的要求,它也可以是符合内存安全的要求的。 如果编译器可以证明对内存的非独占访问仍然是安全的,则 Swift 允许使用这种仅做到了内存安全的代码。

    98820发布于 2021-11-26
  • 来自专栏pandacode_cn

    Swift基础 内存安全

    Swift基础 - 内存安全 翻译自:https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html 默认情况下,Swift 可以防止代码中出现不安全行为 在本例中,根据您想要原始总金额还是更新的总金额,5美元或320美元可能是正确的答案。在修复相互冲突的访问之前,您必须确定它打算做什么。 var oscar = Player(name: “Oscar”, health: 10, energy: 10) var maria = Player(name: “Maria”, health: 5, 限制重叠访问结构属性并不总是必要的,以保持内存安全内存安全是理想的保证,但独家访问是比内存安全更严格的要求——这意味着一些代码保留了内存安全,即使它违反了对内存的独家访问。 如果编译器能够证明对内存的非排他性访问仍然是安全的,Swift允许此内存安全代码。

    75400编辑于 2023-07-17
  • 来自专栏开发笔记

    线程安全&Java内存模型

    Java内存模型 Java内存模型(JMM)主要目标是定义多线程的情况下线程访问变量的规则。 JMM规定线程之间的共享变量存储在主内存中,每个线程都有一个本地内存(工作内存),本地内存存储了共享变量的副本。 ? 关于线程安全 什么是线程安全问题? (数据一致性问题) 如何解决线程安全问题? 核心思想:在同一时刻,只能有一个线程执行。 通过加锁使线程更加安全,也使程序的执行效率更低。 当一个线程对volatile修饰的变量进行读操作时,该线程直接读取主内存的变量。 volatile能否保证线程安全? 不能,保证线程安全需要同时具备原子性,可见性和有序性。 比较主内存的值和本地内存修改前的值是否一致,若一致,将修改后的值刷新到主内存,若不一致,当前线程放弃更新,将主内存数据刷新到本地内存,再次重试。

    76320发布于 2020-08-11
  • 来自专栏Rust 编程

    Rust 视界周刊 Week 5 | 驳 “Rust 等内存安全语言的安全性并不优于C++”

    Rust 社区对 Stroustrup 博士关于 "Rust 等内存安全语言的安全性并不优于C++" 言论的回应 美国国家安全局(NSA)最近发布了一份关于内存安全重要性的网络安全信息表,他们在其中建议从内存安全的编程语言 (如 C 和 C++)转移到内存安全的编程语言(如 Rust)。 Stroustrup 博士反复强调的最有趣且概念上最相关的观点之一是,内存安全并不是唯一的安全类型。 实际上,内存安全是迄今为止内存安全编程语言中安全漏洞和不稳定的最大来源,在某些情况下估计高达70%。这恰恰是 C++ 最严重缺陷的领域。换句话说,Stroustrup 博士认为内存安全并不重要。 而 Rust 语言则专注于解决内存安全的问题。C++ 不强制将内存安全作为编程语言的一项功能。这在未来可能会改变(正如 Stroustrup 博士所讨论的那样),但这是目前的情况。

    1.4K80编辑于 2023-03-06
  • 来自专栏潇湘信安

    哥斯拉内存马Suo5内存代理插件

    前言 昨天在Github闲逛时看到@1ucky7师傅发了的一个哥斯拉内存马、Suo5内存代理的插件。这篇文章我们就来简单记录下这个插件的使用方法以及在测试过程中遇到的一些问题和注意事项。 插件简介 之前写了一个注入suo5的哥斯拉插件,在改装其他中间件的时候遇到一些问题,后面看到@pen4uin师傅写了一个生成各种马以及suo5代理的工具,于是直接给哥斯拉加了一个接口执行代码,方便注入其他管理工具内存马 ,或注入内存代理。 5. 这时在FilterShell功能模块里就能看到我们刚注入进去的内存马和Suo5内存代理。 6. 现在我们已经可以直接去连接哥斯拉的这个内存马和Suo5内存代理了,如下图所示。 ; Suo5连接时得注意在高级配置里设置一下对应的请求头;

    7.5K20编辑于 2023-09-21
  • 来自专栏绿盟科技研究通讯

    解析5G安全(二):5G安全需求

    随着5G的快速建设,5G的安全问题亟待解决。解决5G的安全问题,首先要明确5G的安全需求。 1.2 三大场景对终端的安全需求 除了终端基本的安全需求外,在5G中讨论终端安全需求不能脱离垂直应用场景。5G承载着千行万业的垂直应用,如车联网、工业物联网等。 在明确了5G的安全需求后,下一篇文章我们将对这些安全需求提出相应的安全举措,同时提出一种面向切片服务的多级协同安全防护机制,希望为5G安全防护提供一个新的视角。 5G安全是机遇也是挑战,让我们拥抱5G安全,共同守护5G的美好未来。 参考文献: [1].Rupprecht D , Kohls K , Holz T , et al. 5G移动通信网络安全研究[J].

    8.7K22发布于 2019-12-11
  • 来自专栏c++与qt学习

    Java内存模型和线程安全

    Java内存模型和线程安全 Java内存模型 引言 volatile关键字 synchronized关键字 Java线程 Java线程安全 synchronized锁优化 锁优化技巧列举 自旋锁 锁消除 指令重排序只会在多线程情况下存在并发问题 ---- volatile修饰的变量一定是并发安全的吗? volatile修饰符提供的两个作用并没有体现出其一定是并发安全的,上面的例子也证明了,那么为什么呢? 状态转换: ---- Java线程安全 不可变对象一定是线程安全的,如: String,Integer等 synchronized关键字实现互斥同步: 通过monitorEnter和monitorExit 对于不需要任何同步的场景有: 可重入代码(结果可预测),线程本地存储: ThreadLocal ---- synchronized锁优化 ‘synchronized锁在jdk5之前最大的问题在于一旦抢不到锁就需要阻塞

    79960编辑于 2023-02-10
  • 来自专栏Java Porter

    5. Java内存模型JMM

    JMM 中,如果一个操作执行的结果需要对另一个操作可见,或是代码重排序 则两个操作之间必须存在 happens-before(先行发生原则),逻辑上的先后关系 x,y 的 case 说明 x=5 线程 A 执行 y=x 线程 B 执行 上述称之为:写后续 y 是否等于 5 呢? 如果线程 A 的操作(x=5)happens-before 线程 B 的操作(y=x),那么可以确定线程 B 执行后 y=5 必定成立 若不存在 heppens-before 原则,则 y=5 不一定成立 happens-before 对程序而言,包含了可见性和有序性的约束 happens-before 原则说明 Java 规范下 JMM 的 happens-before 原则,是判断数据是否存在竞争,线程是否安全的非常重要的手段 不涉及线程生命周期和对象终结规则 anwser 由于不满足 happens-before 原则, 虽然可以确定 A 线程优先于 B 线程执行,但是无法确认 B 线程最终得到的结果 该代码是线程不安全

    33810编辑于 2024-03-09
  • 来自专栏雨尘分享

    5.Block的内存管理 内存管理内存管理block的循环引用

    内存管理 ---- 无论当前环境是ARC还是MRC,只要block没有访问外部变量,block始终在全局区 MRC情况下 block如果访问外部变量,block在栈里 不能对block使用retain,

    1.1K40发布于 2018-06-01
  • 来自专栏linux驱动个人学习

    Linux-3.14.12内存管理笔记【构建内存管理框架(5)】

    前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充。 如下图,这是前面已经看到过的linux物理内存管理框架的层次关系。 ? ,包括内存空洞的总的物理页面大小; int node_id; ——pg_data_t对应的索引号,非NUMA架构下该值为0; nodemask_t reclaim_nodes; ——用于记录可回收的内存管理节点 内存分配过程中,当空闲页面达到low时,内存分配器会唤醒kswapd守护进程来回收物理页面;当空闲页面达到min时,内存分配器就会唤醒kswapd以同步方式回收;如果kswapd被唤醒后,空闲页面达到high ,包括内存空洞的页面数,实则上是管理区末尾页面号和起始页面号的差值; unsigned long present_pages; ——除去内存空洞后的内存管理区实际有效的总页面数; unsigned long managed_pages; ——用于记录被内存管理算法管理的物理页面数,这是除去了在初始化阶段被申请的页面; int nr_migrate_reserve_block; ——用于优化的,记录内存迁移保留的页面数

    87830发布于 2019-10-08
  • 来自专栏编程思考

    什么是内存安全的编程语言

    软件安全一直是软件开发和互联网行业中的一个必先要考虑的问题,而编程语言的内存安全则是软件安全的一个重要分支。 在编程语言中,内存安全的重要性体现在多个方面,对于程序的稳定性、可靠性以及安全性都具有至关重要的影响。什么是内存安全的编程语言? 内存安全的编程语言是指那些能够自动管理内存,向编程人员隐藏内存布局,防止内存损坏错误的编程语言。内存安全有助于防止程序崩溃和错误。 当编程语言能够自动管理内存,避免内存泄漏、野指针等内存安全问题时,程序更有可能稳定运行。其次,内存安全能够提高软件的质量和可靠性。 与此相对,C和C++等语言则被认为是内存安全的,因为它们允许直接操作内存地址,并且缺乏边界检查,因此在内存安全性方面常常陷入困境。内存安全时可能会发生什么?

    1.3K30编辑于 2024-04-16
  • 来自专栏Android 开发者

    使用内存安全工具提升应用质量和安全

    Android 内存安全工具是一个可帮助您提升应用质量和安全性的综合工具包。通过本文您可以了解到我们推出的各种内存安全工具及其使用场景,以及了解如何通过这些工具来找到并修复问题。 什么是内存安全错误 内存错误是指在使用 C 或 C++ 等原生语言处理内存时发生的错误。 使用内存安全工具可帮助您减少此类错误,从而改进用户体验。 使用内存安全工具 我们的任务是帮助开发者确保内存安全,帮助您避免在使用原生代码处理内存时造成错误和漏洞。 总结 Android 内存安全工具可以检测代码库中的内存错误,修复此类错误可帮助提高质量和安全性。确保内存安全的诀窍是使用内存安全工具运行代码找到错误,然后修复这些错误。

    1.1K20编辑于 2022-03-24
  • 来自专栏浮躁的喧嚣

    内存管理--32:编写“异常安全代码”时留意内存管理问题

    try{ //1:抛出异常的代码 //2:代码 }catch(){ //3:代码 //4:抛出异常 }finally{ //5:代码 } //6:代码 首先要明确的一点是:不管try是否抛出异常,finally

    27810编辑于 2023-11-22
  • 来自专栏终身学习者

    5个常见的JavaScript内存错误

    JavaScript 不提供任何内存管理操作。相反,内存由 JavaScript VM 通过内存回收过程管理,该过程称为垃圾收集。 既然我们不能强制的垃圾回收,那我们怎么知道它能正常工作? 如果我们一不小心,可能会产生一些内存泄漏。 什么是内存泄漏? 内存泄漏是软件无法回收的已分配的内存块。 Javascript 提供了一个垃圾收集程序,但这并不意味着我们就能避免内存泄漏。 这就是所谓的无意识的内存保持。 泄露内存可能会导致垃圾收集器更频繁地运行。 当从全局作用域调用时,this 是未定义的 如果没有在一个变量上指定const | let | var,你会得到以下错误: Uncaught ReferenceError: b is not defined 5. 总结 在这篇文章中,我们已经看到了最常见的内存泄露方式。很明显,JavaScript本身并没有泄漏内存。相反,它是由开发者方面无意的内存保持造成的。

    2.1K20编辑于 2022-06-15
  • 来自专栏程序员修炼之路

    Handler的5内存泄漏场景

    “每次切屏都卡顿3秒”“后台默默吃掉500MB内存”——这些性能灾难的罪魁祸首,往往藏在你最熟悉的Handler里! Handler作为Android消息机制的核心组件,非静态内部类、延迟消息、同步屏障等设计细节稍有不慎就会引发内存泄漏。 今天我们从MessageQueue的底层机制切入,深度剖析5大高频泄漏场景,让你的App性能飙升300%! 一、内存泄漏的“死亡三角” 任何内存泄漏都离不开三个要素(面试必考黄金法则): 1. 长生命周期对象持有短周期对象引用(如Looper持有Handler) 2. mActivityRef.get(); if (activity == null || activity.isDestroyed()) return; // 安全操作

    67311编辑于 2025-03-07
  • 来自专栏生信技能树

    什么,需要5Tb内存啊!

    最近我就接到一个粉丝咨询,说他想处理一个公共数据集,只有8个原位肿瘤+3个转移肿瘤的10X单细胞转录组样品,但是数据处理的过程发现系统提示说需要5Tb内存,虽然说他自己有一个512G内存的服务器,但是也承受不起 5Tb内存,问我有没有渠道! 额,给他配置一个5Tb内存服务器倒是简单,我自己就有2.5T内存的服务器,不就是加倍嘛!不过,我注意到他就是11个10X转录组样品,理论上不可能是需要5Tb内存的,所以让他把代码发过来我检查看看. and 8000 genes pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5) 太有意思了,为什么我想讲解这个故事呢,因为在很多交流群都看到有粉丝问内存不够,实际上很多情况下,内存不够是因为你代码学的很差。 如果你连512G内存都没有呢? 临时使用的话,可以考虑我们的共享云哦!

    1.4K30发布于 2021-01-18
  • 来自专栏Rust 编程

    安全设计白皮书 | 谷歌对内存安全的洞察

    这份白皮书中深入探讨了数据、解决内存安全性的挑战,并讨论了实现内存安全的可能方法及其权衡。 谷歌相信通过逐步过渡到部分内存安全的C++ 语言子集,并在可用时增加硬件安全功能,可以实现实质性的改进。例如,可以参考谷歌在 GCP 的网络堆栈中改进空间安全性的工作[5]。 相关定义 内存安全漏洞 内存安全漏洞是指当程序在内存访问构成未定义行为的状态下允许执行读取或写入内存的语句时产生的。 解决内存安全漏洞的途径 安全编码 解决内存安全问题需要采取多管齐下的方法,包括: 通过安全编码来防止内存安全漏洞。 通过增加攻击的成本来减轻内存安全漏洞。 尽早在开发生命周期中检测内存安全漏洞。 例如,我们的内核模糊测试工具syzkaller 在上游 Linux 内核中发现了 5k+ 个漏洞,因此在任何给定的时间都会有数百个未解决的漏洞(其中很大一部分可能与安全有关),这个数字自 2017 年以来一直在稳步增长

    1.6K10编辑于 2024-03-12
  • 来自专栏c/c++

    【C++】探索C++内存管理:机制揭秘与内存安全

    解答: sizeof(num1)求整个数组大小,是40个字节; sizeof(char2) 求整个数组大小(包括’/0’),是5个字节; strlen(char2) 求字符串大小(遇到’/0’停止 delete操作内置类型 void Test() { // 动态申请一个int类型的空间 int* ptr4 = new int; // 动态申请一个int类型的空间并初始化为10 int* ptr5 = new int(10); // 动态申请10个int类型的空间 int* ptr6 = new int[10]; //释放空间 delete ptr4; delete ptr5; delete ✨对于开辟多个元素的空间初始化: int* ptr7 = new int[10]{1,2,3,4,5}; delete[] ptr7; 这里可以全部初始化,也可以部分初始化(剩下的会自动初始化为0); 异常安全问题 int* p3 = new int[10]; Func(); // 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放. delete[] p3; } ☑️ 内存泄漏分类

    45310编辑于 2024-05-03
  • 来自专栏学院君的专栏

    安全地使用 Redis(上):端口安全、指令安全内存使用限制

    Redis 的安全隐患 线上运行的 Redis 服务主要有哪些安全隐患呢? 以上这些都是一些最基本最常见的 Redis 安全隐患,要规避这些问题,我们该怎么做呢? 端口安全 首先,我们可以通过配置 Redis 来确保服务端的端口安全,阻止恶意用户建立连接。 关于端口安全问题造成的线上事故案例,可以阅读学院君之前发布的这篇教程:Laravel 学院今天凌晨四点到上午十点不能访问问题定位及修复细节通报。 指令安全 前面我们介绍 Redis 安全隐患的时候提到恶意用户建立连接后可能执行 flushdb 之类的指令清空 Redis 内存数据库,现在,我们已经通过配置 bind 或者 requirepass "" 内存使用与写入频率限制 接下来,我们来看如何避免大量高频的写入导致 Redis 内存耗尽的问题。

    1.7K20编辑于 2023-03-03
领券