![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux、c、c++、jni等
文章平均质量分 87
linux、c、c++、jni等
baiiu
每天前进三十公里
展开
-
C++ 左值、右值、左值引用、右值引用
本文介绍C++11的各种引用的概念,理解清楚各种引用的概念,非常有助于理解基于c11引用的各种操作。原创 2024-06-03 08:00:00 · 669 阅读 · 0 评论 -
C++ 动态分配内存&智能指针
本文介绍C++中的内存动态分配、和更好的用于对象内存管理的智能指针。原创 2024-06-03 08:00:00 · 1018 阅读 · 0 评论 -
C++ 类与构造函数 三五法则
定义了拷贝操作的类类通常拥有一个资源,而拷贝成员必须拷贝此资源。但是拷贝一个资源会导致一些额外开销。在这种拷贝并非必要的情况下,定义了移动构造函数和移动赋值运算符的类就可以避免此问题。原创 2024-06-02 09:08:44 · 1089 阅读 · 1 评论 -
arm体系结构:汇编指令
ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。原创 2023-08-26 16:11:51 · 393 阅读 · 0 评论 -
arm体系结构:寄存器
本文主要介绍ARM RISC 32位体系结构下的相关知识,主要理解寄存器和相关指令,要读懂汇编啊。原创 2023-08-24 20:50:49 · 391 阅读 · 0 评论 -
Linux pthread_create源码分析
本文介绍pthread_create函数的使用和源码分析。原创 2023-06-03 12:53:58 · 1127 阅读 · 0 评论 -
C语言 非本地跳转 实现native层TryCatch
C语言的本地跳转是指goto、break、continue等语句,但是这个语句最大局限就是只能实现函数内部的跳转。C 语言提供了一种用户级异常控制流形式,称为非本地跳转(non local jump),它将控制直接从一个函数转移到另一个当前正在执行的函数,而不需要经过正常的调用—返回序列。原创 2023-04-19 23:05:20 · 482 阅读 · 0 评论 -
C++ 进阶知识整理
本文整理c++进阶语法和知识点。原创 2023-03-27 18:46:00 · 127 阅读 · 0 评论 -
C++ 侯捷课程知识整理
前言本文整理C++基础知识,用于开发中日常查阅。引用智能指针const关键字const修饰变量const修饰的变量也称为常量。使用关键字const对限定变量的值,避免其他操作改变该值,不可修改;const 数据类型 变量名 = 常量值const对象一旦创建后就不能改变,所以必须对其进行初始化。默认情况下,const对象仅在文件内有效。编译器在编译过程中会把用到该const变量都替换成对应的值。添加volatile后,可以禁止编译器对该值进行优化,必须在运行时去读取该c原创 2022-02-07 17:16:30 · 1559 阅读 · 0 评论 -
C++ Primer 前六章基础知识笔记
第二章:变量和基本类型列表初始化C++语言定义了好几种不同形式的初始化,这也是初始化问题复杂性的一个体现。C++11用花括号来初始化变量得到 了全面应用,这种初始化方式被称为列表初始化,现在无论是初始化对象还是赋新值,都可以使用花括号这种方式了。int a = 0;int a = {0};int a{0};int a(0);默认初始化如果定义变量时没有指定初值,则变量会被默认初始化。内置类型是成员变量时会被初始化为0;是局部变量时将不初始化,是一个任意值,是一个不确定的值。使用未初始原创 2021-08-26 10:12:27 · 188 阅读 · 0 评论 -
C++ C++实战笔记
前言本文整理C++实战笔记,做个记录。google c++ code stylehttps://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/C++语言的编程范式“编程范式”是一种“方法论”,就是指导你编写代码的一些思路、规则、习惯、定式和常用语。C++是一种多范式的编程语言。具体来说,现代C++(11/14以后)支持“面向过程”“面向对象”“泛型”“模板元”“函数式”这五种主要的编程范式。面向过程原创 2021-06-13 22:20:36 · 4891 阅读 · 13 评论 -
c、c++ 常用API汇总
前言本文汇总c、cpp里常用API,会持续更新,便于查阅。<string.h>char *strchr(const char *str, int c)在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。char *strstr(const char *haystack, const char *needle)在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’;返回字符串str中第一次出现子串subst原创 2021-04-15 10:28:14 · 10351 阅读 · 1 评论 -
C语言 基础知识整理
前言本文整理C语言基础知识,用于开发中日常查阅。C数据类型类型描述基本类型它们是算术类型,包括两种类型:整数类型和浮点类型枚举类型它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量派生类型它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。void类型类型说明符 void 表明没有可用的值。printfCode格式描述%c字符%d带符号整数%i带符号整数%e科学计数法,使用小原创 2020-12-28 11:49:26 · 1017 阅读 · 1 评论 -
C语言 C内存模型
参考:C语言内存模型(内存组织方式)C语言程序的内存布局(内存模型)程序代码区(code area)存放函数体的二进制代码。全局区数据区(data area)全局数据区划分为三个区域。初始化的全局变量和静态变量在一块区域;未初始化的全局变量和未初始化的静态变量在相邻的另一块区域;常量数据存放在另一个区域里。这些数据在程序结束后由系统释放。我们所说的BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started.原创 2020-12-21 13:04:03 · 682 阅读 · 1 评论 -
Android Native开发 内存注意事项
前言本文记录在native开发注意事项,会持续更新;native开发会遇到的问题:JNI层面,各种reference;内存管理不当,溢出、重复释放或错误释放,接入asan解决native内存泄露,使用一些开源库检测,如Raphael等;JNI注意事项官方文档:JNI tipsJNI内存管理及优化JNI_ONLOAD函数只调用一次获取非局部引用的唯一方法是通过 NewGlobalRef 和 NewWeakGlobalRef 函数。请注意,jfieldID 和 jmetho原创 2021-06-03 11:56:17 · 564 阅读 · 1 评论 -
JNI原理 模仿System.loadLibrary和dlopen使用
前言如下图所示,OpenNativeLibrary代码中使用了dlopen打开动态库,本文按照该源码中调用dlopen、dlsym来调用so里的方法,加强一下理解。本文就是模仿源码、模仿System#LoadLibrary流程,在Java层获取到要调用so路径后,传入c层调用dlopen打开,并通过dlsym调用方法后dlclose结束。函数说明dlopen()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。RTLD_LAZYEach external function原创 2020-12-25 19:02:32 · 3878 阅读 · 6 评论 -
JNI原理 System.loadLibrary源码分析
前言本文介绍System.loadLibrary原理。Java层源码流程System#loadLibrary-> Runtime#loadLibrary0–> BaseDexClassLoader#findLibrary–> DexPathList#findNativeLibrary->Runtime#nativeLoad,走向c层源码主要是从nativeLibraryPathElements中找到so路径,遍历所有路径找到存在的so,不存在则抛出Unsatisfi原创 2020-12-24 20:55:17 · 3334 阅读 · 1 评论 -
JNI JNI基础
前言本文过一遍JNI基础。1. CMakeList.txtgradle脚本如下:android{ defaultConfig { externalNativeBuild { cmake { cppFlags "-std=c++11" } } } externalNativeBuild { cmake { path file('原创 2020-05-24 22:30:39 · 609 阅读 · 0 评论