- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 分析Java .class 文件的字节码
最后,完整的解析下常量池中的各个常量,解析结果用注释追加在各个字节行后面,为了方便,在行开始人为加上行号。在上述分解结果中,第23行的两个字节0002 表示后面有两个函数,第一个为构造函数,第二个为main函数。上述对构造函数的分解过程已经是完整的过程,对main函数也进行一次分解,加深印象。上述分解结果中,常量池一共有14个成员,我们需要通过UTF-8转为可读字符。的引用,我们将解析出来的字符,用注释追加到字节码后面。可得,14个常量的第一个字节。这里需要查询两个表,一个是。可得到如下的分解结果。
2023-12-07 18:21:39
520
原创 使用Idea HexEditor插件打开二进制文件
-----------完成------------------对.class 文件使用Hex编辑器打开。也可以在idea中使用插件打打开。
2023-12-07 14:48:01
1079
原创 Android应用支持Native
前置条件构建工具,包含Cmake和ndk-build。官方更加推崇Cmake。此处以Cmake为例。Cmake 构建工具Cmake 构建脚本src/cpp 目录x.cpp 文件build.gradle 配置 Cmake,ndk版本;配置Cmake脚本路径
2023-08-02 10:52:11
124
原创 Android UI 单位
应用的屏幕尺寸:并非设备的实际屏幕尺寸,而是综合考虑屏幕方向、系统装饰(如导航栏)和窗口配置更改(例如,当用户启用多窗口模式时)后的尺寸。dp dip : 虚拟像素,像素密度无关 ,以160dpi为基准,自动进行转换。公式:px = dp * (dpi / 160)sp :除了具有dp的功能,还考虑的用户对系统字体大小的设置。官网建议:当指定文本大小时,请一律使用。
2023-06-25 17:02:40
127
原创 c++ 构造函数初始化的两种方式
需要注意的是,使用初始化列表进行成员变量初始化比在构造函数体内使用赋值语句效率更高,并且可以用于初始化const成员变量或引用类型成员变量。构造函数的初始化列表可以在构造函数的参数列表后面使用冒号分隔符,然后在冒号后面列出每个成员变量及其对应的初始化值。构造函数也可以在其函数体内使用赋值语句来初始化成员变量。在这个例子中,构造函数使用了初始化列表来初始化。在这个例子中,构造函数使用了赋值语句来初始化。希望这个解释能对您有所帮助。
2023-05-05 19:06:09
2086
原创 c++指针常量,指向常量,指向常量的指针常量
可以控制指针以及指针指向的对象内容为常量。在java里面,如果把一个引用修饰为final,那么这个引用只能指向这个对象,但是对象的内容还是可以被修改的。c++ 通过两个const,不仅控制了指针只能指向这个对象,还控制了这个对象的内容是否可以被更改。
2023-05-05 16:51:03
191
原创 c/c++ 指针
普通指针,指针常量在作为函数参数时的差异。函数内部在访问普通指针时,访问的是该。访问指针常量时,访问的是该。,不会访问到指针原值。
2023-05-05 16:34:11
84
原创 为什么64位系统输出的指针大小没有8字节?
在上面的示例中,我们使用std::cout输出了一个指向int类型的指针ptr,并使用sizeof关键字获取了ptr在当前设备上所占用的字节数。然后,我们使用std::cout输出了ptr的地址,以及使用std::hex和std::setw函数设置了输出格式,以便输出完整的8字节地址。但是,当您输出指针时,可能只会显示5个字节的地址。这是因为默认情况下,输出的地址只显示了指针的低32位。这是因为64位操作系统的地址总线宽度为64位,因此指针类型需要8个字节来存储完整的内存地址。
2023-05-04 18:44:50
702
原创 C++引用到底占用空间吗?
(其实是c++语言层面,做了这个限制导致的,引用在使用的时候默认被解引用了,这个时候sizeof只能取到指向的对象,而不是引用本身。sizeof(指针)占用了空间,但是sizeof(引用)就没有占用空间,而是引用指向的对象的空间大小。引用这个地址,肯定是在内存里面占了空间了,不然这个地址信息放哪里。比如,sizeof指针,和sizeof指针指向的对象,他们的大小会不一样。验证办法,申明足够多的引用指向同一个对象,观察内存的使用情况。是物理上的内存,还是单个程序里面的内存。但是,如果只是从程序的角度而言。
2023-04-27 10:52:47
1423
原创 内存分析工具
Java 内存分析工具可以帮助开发人员诊断和解决内存相关问题,例如内存泄漏、内存溢出等。安卓内存分析工具可以帮助开发人员诊断和解决安卓应用程序的内存相关问题,例如内存泄漏、内存溢出等。以上是其中一些常用的 C++ 内存分析工具,不同的工具有不同的特点和适用场景,可以根据具体需要选择合适的工具。Valgrind:一个功能强大的内存调试和性能分析工具,可以检测出内存泄漏、非法内存访问等问题。Purify:一个商业化的内存调试工具,可以检测出内存泄漏、非法内存访问等问题。
2023-04-27 10:29:45
2306
原创 C++,JAVA内存区域
内存区域方面,C++ 程序通常会将内存分为以下几个区域:代码区:用于存放程序的指令代码,通常是只读的。静态存储区:用于存放全局变量、静态变量和常量等数据,其生命周期与程序的生命周期相同。栈:用于存放函数调用时创建的局部变量、函数参数和临时对象等数据。栈上的数据在函数执行完毕后会被自动销毁。对象的析构函数会被自动调用,释放 对象占用的内存堆:用于存放动态分配的对象,其生命周期由程序员显式控制。堆上的数据需要手动释放,否则可能会导致内存泄漏。需要注意的是,具体的内存区域划分可能因编译器和操作系统而异。
2023-04-27 10:28:47
143
原创 c++ 中的变量类型
其中,整型包括有符号和无符号两种类型,浮点型包括单精度和双精度两种类型,字符型用来表示单个字符,布尔型用来表示真假值。总之,C++ 中的变量类型多种多样,每种类型都有自己的特点和用途。结构体中的每个成员可以是任何类型的变量,可以通过成员运算符 . 来访问结构体中的成员。类类型:是一种更高级别的结构体类型,包括成员函数、构造函数、析构函数等特性,用来表示一个对象及其相关操作。数组类型:用来表示一组相同类型的变量。引用类型:用来表示变量的别名。指针可以指向任何类型的变量,通过指针可以访问所指向的变量。
2023-04-26 16:03:18
2916
原创 c++指针和引用的使用场景
总之,指针和引用在 C++ 中都是非常重要的工具,它们都有自己的使用场景和优缺点。在实际编程中,我们需要根据具体情况选择合适的工具来处理内存地址,并且要注意避免内存泄漏和野指针等问题。
2023-04-26 15:54:20
655
原创 C/C++ 指针变量大小
它的大小与操作系统和编译器有关。具体来说,指针变量的大小通常为4字节或8字节,取决于操作系统和编译器的位数。在32位的操作系统上,指针变量的大小通常为4字节;在64位的操作系统上,指针变量的大小通常为8字节。,因此一个指针变量需要4字节来存储地址。而64位操作系统的地址总线宽度为64位,这是因为32位操作系统的地址总线宽度为32位,,因此一个指针变量需要8字节来存储地址。需要注意的是,指针变量的大小。,而与指向的对象类型无关。
2023-04-26 10:00:30
2364
1
Genymotion-ARM-Translation_v1.1
2016-03-24
genymotion-arm-translation
2016-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人