自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 C++中New和delete的原理

New和delete的原理当我们在程序中写下 new 和 delete 时,我们实际上调用的是 C++ 语言内置的 new operator 和 delete operator。所谓语言内置就是说我们不能更改其含义,它的功能总是一致的。以 new operator 为例,它总是先分配足够的内存,而后再调用相应的类型的构造函数初始化该内存。而 delete operator 总是先调用该类型的析...

2019-01-23 15:31:56 318

翻译 C++中的const_cast

const_cast in C++ | Type Casting operatorsC++ supports following 4 types of casting operators:1. const_cast2. static_cast3. dynamic_cast4. reinterpret_cast1. const_castconst_cast is used to ...

2019-01-07 20:39:43 540

原创 Linux进程间通信之pipe

1、管道(PIPE)       从概念上说,管道是两个进程之间的一个connection,因此一个进程的标准输出就变成了另一个进程的标准输入。在Unix操作系统中,管道用于进程间通信(inter-process communication).(1)Pipe是一种单向的通信方式,一个进程向管道中写数据,另一个进程从这个管道中读,数据只能向一个方向流动,需要双向通信时,要建立起两个管道。打开...

2018-12-12 16:55:58 417

原创 Linux 系统调用 wait()和waitpid

       一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊变量$?查看,因为Shell是它的父进程,当它终止时Sh...

2018-12-12 15:13:47 813

原创 Linux 系统调用 dup()和dup2()

1、dup()dup()系统调用会创建文件描述符的一个拷贝:(1)新生成的文件描述符是进程中最小的未使用的文件描述符,0 、1 、2对应标准输入、标准输出、标准错误输出(2)如果拷贝成功,那么原始的和拷贝的文件描述符可能会交叉使用(3)两者都指向同一个打开的文件描述符,因此共享文件偏移量和文件状态标志语法:int dup(int oldfd);oldfd: 旧的文件描述...

2018-12-12 14:22:38 388

原创 C语言常用函数

1、snprintfchar a='a';char str[3];snprintf(str,sizeof(str),"%02x",a);解释如下:size是限定最终生成的dest的字符数,最多拷贝size-1个字符; 一般情况下size会取sizeof(dest),这是为了dst不溢出.在snprintf(dest, size, "str: %s\n", src)中如果size-...

2018-12-07 16:45:36 166

原创 C语言中的'0'、'\0'、0

'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。在数值类型里就代表数字0。数值类型存储时,最高位决定正负号,其他位都为0可不就是0了么?'\0'是转译字符,意思是告诉程序,这不是字符0,我要的是数字0的2进制直接放进来,因为acsii码的0可不是000000000是整型,'\0'、'0'是字符char型,在内存中都用一个字节表示,其实都是int型,对...

2018-12-07 15:40:03 10425

原创 C语言中char s[]与char *s的不同

首先看一下C语言中下面两个语句的不同:char s[10] = “abcde";char *s = "abcde";两者不同的关键点如下:(1)数组char s[10] = "abcde"s是一个数组;sizeof(s) = 10 bytesa与&a是一样的abcde存储在内存的栈空间中char s[10] = "abcde";s = "hello";这是非法的...

2018-12-07 14:43:48 8265 2

原创 C IN ARM64 汇编基础-函数和程序结构-基于The C Programming Language - Second Edition

C源码:#include <stdio.h>int add(int a, int b) { return a+b;}汇编源码:0000000000000558 <add>: 558: d10043ff sub sp, sp, #0x10 //申请16个bytes 55c: b9000fe0 str w0, [sp,#12...

2018-10-18 20:07:44 319

原创 C IN ARM64 汇编基础-函数-基于The C Programming Language - Second Edition

C源码:#include <stdio.h>int power(int m, int n); /* test power function */int main() { return power(2,1);}int power(int base, int n) { return base;}汇编源码://main函数0000000000...

2018-10-17 21:19:05 241

原创 C IN ARM64 汇编基础-变量与表达式-基于The C Programming Language - Second Edition

C源代码:#include <stdio.h>/* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300 */ main() { int fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temp...

2018-10-17 18:02:18 551

原创 C IN ARM64 汇编基础-实例helloworld-基于The C Programming Language - Second Edition

可以在源码某个目录下新建一个文件夹,比如frameworks/testing目录下:写一个Android.mk文件:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= var_extern.cLOCAL_MODULE:= var_externLOCAL_64_BIT_ONLY := true   //...

2018-10-17 15:59:06 530

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除