OpenJDK源码赏析之四(jli_util中的工具函数)
上一篇:
OpenJDK源码赏析之三:Java命令参数的读取_星空_MAX的博客-CSDN博客
不承接上一篇,这篇单独开始分析jli_util.h(java工具函数)里的一些函数
JLI_MemAlloc
/** Returns a pointer to a block of at least 'size' bytes of memory.* Prints error message and exits if the memory could not be allocated.*/
void *
JLI_MemAlloc(size_t size)
{void *p = malloc(size);if (p == 0) {perror("malloc");exit(1);}return p;
}
可以看到jJLT里面的内存分配实际上用了C语言自带的malloc函数,这里如果分配失败则会输出错误信息,并执行,exit(1)表示异常退出,这个1是返回给操作系统的
关于malloc函数精解,可以看另一篇文章
linux-malloc底层实现原理_mmshixing的博客-CSDN博客_malloc的底层实现
JLT_MemeRealloc
/** Equivalent to realloc(size).* Prints error message and exits if the memory could not be reallocated.*/
void *
JLI_MemRealloc(void *ptr, size_t size)
{void *p = realloc(ptr, size);if (p == 0) {perror("realloc");exit(1);}return p;
}
重新分配内存,也同样是调用C语言的
JLI_StringDup
/** Wrapper over strdup(3C) which prints an error message and exits if memory* could not be allocated.*/
char *
JLI_StringDup(const char *s1)
{char *s = strdup(s1);if (s == NULL) {perror("strdup");exit(1);}return s;
}
strdup可以直接把要复制的内容赋值给没有初始化的指针,因为它会自动分配空间给目的指针
strcpy的目的指针一定是已经分配内存的指针
JLI_MemFree
/** Very equivalent to free(ptr).* Here to maintain pairing with the above routines.*/
void
JLI_MemFree(void *ptr)
{free(ptr);
}
呃,和free一样,官方解释为和上面保持一样
JLI_StrCCmp
int
JLI_StrCCmp(const char *s1, const char* s2)
{return JLI_StrNCmp(s1, s2, JLI_StrLen(s2));
}
在jli_util.h中找到宏定义
#define JLI_StrNCmp(p1, p2, p3) strncmp((p1), (p2), (p3))
将p1函数和p2函数进行比较,比较p3个字节,
p1=p2则等于0,
p1>p2则返回值大于0,
p1<p2则返回值小于0
OpenJDK源码赏析之四(jli_util中的工具函数)相关推荐
- OpenJDK源码赏析之二:java虚拟机启动流程到首函数调用全流程
承接上一谈 OpenJDK源码赏析之一:漫谈java的历史渊源_星空_AZ的博客-CSDN博客 JAVA从启动到第一个函数执行的发生的流程: WinMain->JLI_Launch->JV ...
- OpenJDK源码赏析之三:Java命令参数的读取处理流程
承接上一篇 OpenJDK源码赏析之二:java虚拟机启动流程到首函数调用全流程_星空_AZ的博客-CSDN博客 这篇这要解析Java虚拟机创建时候配置读取时候命令行参数的读取过程,这次采取逆向思维分 ...
- commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(三)-中英对照文档及源码赏析
commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(三)-中英对照文档及源码赏析 摘要:中英对照文档.源码赏析.or ...
- commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(二)-中英对照文档及源码赏析
commons-math3-3.6.1-org.apache.commons.math3.analysis.function-包下的类(二)-中英对照文档及源码赏析 摘要:中英对照文档.源码赏析.or ...
- commons-math3-3.6.1-org.apache.commons.math3.analysis.integration-包下的类-中英对照文档及源码赏析
commons-math3-3.6.1-org.apache.commons.math3.analysis.integration-包下的类-中英对照文档及源码赏析 摘要:中英对照文档.源码赏析.or ...
- commons-math3-3.6.1-org.apache.commons.math3.analysis.differentiation-包下的接口-中英对照文档及源码赏析
commons-math3-3.6.1-org.apache.commons.math3.analysis.differentiation-包下的接口-中英对照文档及源码赏析 摘要:中英对照文档.源码 ...
- commons-math3-3.6.1-org.apache.commons.math3.analysis.integration.gauss-包下的类-中英对照文档及源码赏析
commons-math3-3.6.1-org.apache.commons.math3.analysis.integration.gauss-包下的类-中英对照文档及源码赏析 摘要:中英对照文档.源 ...
- eos源码赏析(二十三):默克尔树在EOS中的应用(上)
前面文章中在分析push_transactioneos源码赏析(二十):EOS智能合约之push_transaction的天龙八"步"以及区块签名eos源码赏析(二十一):EOS智 ...
- 转-OpenJDK源码阅读导航跟编译
OpenJDK源码阅读导航 OpenJDK源码阅读导航 博客分类: Virtual Machine HotSpot VM Java OpenJDK openjdk 这是链接帖.主体内容都在各链接中. ...
最新文章
- 听说,这是时下最恐怖的出游邀请
- 前滴滴产品总监刘滢:从这里了解新零售的本质
- idea中构造器和toString方法覆写的快捷键
- windows下写的脚本,在linux下执行失败
- Wireshark数据包分析(一)——使用入门
- ipynb文件转为python(.py)文件
- 学习笔记--2014年7月7日
- 【xshell】xshell 自动换行设置
- 周志华教授:长文详细教你如何做研究与写论文?
- sysadmin.php,骆驼IPTV源码及搭建教程(只提供源码和安装视频不提供任何技术支持)-396资源...
- Java 电阻计算器(一)
- 华为电脑安装双系统linux,华为MateBook笔记本安装Win10与Ubuntu双系统
- NLP中的主题模型理解
- 2022年对于李一男是关键的一年,这也将决定他的社会地位
- Mac M1解决mach-o, but wrong architecture
- 如何一条命令查询笔记本电池损耗情况-生成报告
- android dfu升级
- linux环境下安装node
- 微信扫描下载提示以及js判断用户手机系统
- o.m.s.m.ClassPathMapperScanner : No MyBatis mapper was found in ‘[com.XXX.XXX]‘ pack