【底层机制】std::string 解决的痛点?是什么?怎么实现的?怎么正确用?
std::string 的引入,就是为了将程序员从这些繁琐、易错且危险的操作中解放出来。 它作为一个类,封装了字符序列和所有相关的内存管理操作,提供了安全、高效且易用的字符串抽象
std::string 的引入,就是为了将程序员从这些繁琐、易错且危险的操作中解放出来。 它作为一个类,封装了字符序列和所有相关的内存管理操作,提供了安全、高效且易用的字符串抽象
std::shared_ptr 的核心价值在于:它通过自动化的引用计数技术,安全、高效地实现了资源的共享所有权模型,将开发者从手动管理共享资源生命周期的泥潭中彻底解放出来
1. 概念 差分其实就是前缀和的逆运算,已知a1、a2……an,构造b1、b2……bn,使得ai=b1+b2+……+bi,bj=aj-a(j-1),A数组称为B数组的前缀和,B数组称为A数组的差分。
在现代C++开发中,优先考虑使用 emplace_back,尤其是在构造对象成本较高或需要多个参数的场景下。它是编写高效、现代C++代码的重要习惯之一。理解其背后的原理,能让你更自信地做出正确的选择
总览 基本使用 作用:给变量起别名 语法:数据类型 &别名 = 原名 引用的注意事项 引用做函数参数 作用:函数传参时,可以利用引用让形参修饰实参(也就是通过形参修改实参) 优点:之前形参修饰实参只能
IGH EtherCAT( EtherLab Master)是一个开源的、高性能的 EtherCAT 主站 协议栈。它运行在基于 Linux 的操作系统上。
1. 概念 当两个正数相加时,可能会超出其类型的最大范围。当两个负数相加时,可能会超出其类型的最小范围。当两个数相乘时,依旧可能会超出其类型所能表示的最大范围。 2. 加法 2.1. 思路 从个位开始
前言 在使用 Android NDK 编译 so 文件 时,默认情况下,所有 public C/C++ 函数都会被导出 。这意味着无论函数是否真正需要对外使用,它们的符号表都会出现在 so 文件中。只
回答策略 首先,写出能正确处理重叠问题的版本。 然后,提出块拷贝优化,并主动点出按块访问连续内存的前提——这块内存的首地址必须是按sizeof(uintptr_t)个字节对齐的。 接着,讨论“对齐同步
它让C++程序员能够明确区分和处理“可安全拷贝的持久对象”和“可安全窃取其资源的临时对象”,从而编写出效率极高、资源管理清晰的现代C++代码
前言 把 OLLVM 移植到 LLVM18 后,发现 -fla(控制流平坦化)不能正常使用。 关于移植过程参考这篇文章:OLLVM 移植 LLVM 18 实战,轻松实现 C&C++ 代码混淆 测试代码
前言 很多 Android 应用会把核心逻辑都写在 SO 层,并通过 RegisterNatives 动态注册 JNI 方法,把 Java 层的 native 方法和真实的 C/C++ 函数地址在运行
前言 在 Android 应用的 Native so 中,C/C++ 字符串是最容易泄露的弱点 。只要用 IDA、Ghidra 等逆向工具打开 so,明文字符串往往一览无余,核心逻辑、协议关键字、敏感
核心概念:稀疏文件是一种计算机文件存储技术,其中文件中的空数据块(通常是由一串零字节组成,称为“空洞”)不会实际分配物理磁盘空间。文件系统只是在元数据中记录这些空洞的位置和大小
学习通是常用的学习工具,可以随时进行学习,找到你需要的资源,跨平台就能在线学习,了解学习的进度,但是很多小伙伴找不到入口在哪,下面就分享给大家。学习通网页版登录
点击阅读