![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序语法
kernweak
日子越来越有判头了
展开
-
《第一行代码笔记》目录与日志
andorid大致分为:Linux内核层,系统运行库层,应用框架层,应用层。Linux内核层为硬件提供底层驱动系统运行库层为android提供主要特性支持如数据库支持等,这层还有Android运行时库,另外还有虚拟机也在这层。应用框架层提供了构建应用程序用到的各种API。andorid四大组件:Activity,Service,Broadcast Receiver,Content ...原创 2020-01-01 22:25:57 · 200 阅读 · 0 评论 -
error C4996: 'inet_ntoa'与error C4996: 'inet_addr'
在VS2017,64位的Windows系统中不能再使用#include <winsock2.h>的老旧函数inet_addr(),inet_ntoa()等旧版函数。使用#include<WS2tcpip.h>新版函数。例如使用inet_ntoa()时,会报如下错误提示:错误 1 error C4996: 'inet_ntoa': Use inet_ntop() ...原创 2019-08-26 11:44:34 · 2022 阅读 · 0 评论 -
C++新特性学习(引用)
引用左值:既能够出现在“=”左边也能出现在右边的变量(一般就是有名字,能寻址的)右值:只能出现在复制符“=”右边的变量或表达式在C++11中所有的值必属于左值,纯右值,将亡值之一,比如临时变量(函数返回的临时变量,运算表达式产生的临时变量),原始字面量都是纯右值,而将亡值是C++11与右值引用相关的表达式(将要被移动的对象,std::move返回值等)。左值引用引用就是某个变量...原创 2019-07-28 13:36:42 · 160 阅读 · 0 评论 -
知识点复习
Windows系统启动流程1.启动自检2.初始化启动阶段bios将MBR引导代码加载到内存,交给其进行启动过程。MBR遭到活动分区,检测文件系统是否可用,找到ntldr文件,然后启动它,BIOS再讲控制权给ntldr,由其完成启动(win7是Bootmgr)3.boot加载阶段ntldr设置内存模式,启动文件系统,读取boot.ini配置。4.检测硬件配置阶段5.内核加...转载 2019-07-09 19:39:39 · 461 阅读 · 0 评论 -
_memmove实现
算法注意点:如果原内存在低地址并且有一部分和目标地址重叠,要从后向前拷贝,不然会出现覆盖还没拷贝的内存污染数据造成错误void _memmove(void *pDst, const void *pSrc, size_t size) { //pSrc与pDst共享一块内存区域 if ((pSrc < pDst) && ((char*)pSrc + size &g...原创 2019-05-29 00:03:40 · 188 阅读 · 0 评论 -
使用vs2008+wdk7600编译遇到的坑
1.DDKBLD:ERROR#3:TobuildusingtypeW7youneedtosetthe%W7BASE%environmentvariabletopointtotheWindows7/Windows2008ServerR2DDKbasedirectory!这是因为DDKBUILD.CMD设置的wdk7600版本和自己安装的...原创 2019-05-22 13:45:36 · 514 阅读 · 1 评论 -
驱动函数分类
ExXxx():ExAllocatePoolWithTag()ExAcquireFastMutexExGetPreviousModeIoXxx():io管理器相关的KeXxxIoCreateDeviceIoCreateSymbolicLinkIoGetCurrentIrpStackLocationIoAttachDeviceToDeviceStackI...原创 2019-05-21 23:14:05 · 3109 阅读 · 0 评论 -
C语言一些小点的复习
1字符串与字符等数据区分int mian(void){ printf("hello world");}//"hello world",多字节字符串,字符占空间大小不一样//L"hello world",UNICODE编码,每个字符都是占相同编码,内核采用这种//_T("xxxx"),自适应,取决于项目的宏。//'a',char,asic,一个字节//L'a'wchar_...原创 2019-05-18 19:53:36 · 288 阅读 · 0 评论 -
进程结构体和线程结构体
首先说明这分析的是XP系统,WIN7每个单元偏移略有差距进程结构体EPROCESS每个windows进程在0环都有一个对应的结构体:EPROCESS 这个结构体包含了进程所有重要的信息。PEB在3环,EPROCESS在0环。KPROCESS主要成员介绍 1234567891011121314151617181920212223...原创 2019-05-03 10:58:48 · 1146 阅读 · 0 评论 -
WIN32编程视频的相关笔记二
虚拟内存与物理内存1. 虚拟内存与物理内存关系1可以使用的内存不一定有物理页,必须申请内存了才有物理页。物理页数量限制由内存条限制物理内存10pagefile.sys,就是用硬盘存放物理页。私有内存的申请与释放windbg里!vad 地址,可以查看那些线性地址被占用。线性地址分为Private和Mapped私有内存时当前物理页只归当前进程用,一个物理...原创 2019-05-03 10:57:56 · 234 阅读 · 0 评论 -
WIN32编程视频的相关笔记一
编码中GB2312是利用ASIIC的127到256的两个确定一个汉字,所以不同语言不兼容,unicode只是一种编码,即所有语言符号有唯一值,而他的存储格式被分为unicode-8或者-16,即内核单元用几位,具体符号比如16的开头有个FFFE和FEFF是标志大端还是小段存储,在文本开头显示,具体存储看其的编码比如分3个段加不同的前缀,由于unicode最多四个字节存储,但有些一字节即可,所...原创 2019-05-03 08:18:44 · 273 阅读 · 0 评论 -
数组首地址注意事项
比如两个数组,一维数组 int a1[4]和a2[4][2]此时a1,&a1,a2,&a2都是首地址,值相同,类型不同,比如a1类型是int *p,&a1类型是 int(*p)[4],a2的类型是int(*p)[2],&a2的类型是int(*p)[4][2]。一般情况下:int a[m1][m2][...][mn]a,&a,&a[0]....原创 2019-02-21 23:13:42 · 208 阅读 · 0 评论 -
编译原理学习之简单介绍
首先说明这是网易云课堂中国科学技术大学华保健老师的课程《编译原理》听课笔记,大部分内容是ppt资料,为了方便记忆,写了如下笔记。编译器具有非常模块化的高层结构。一般有输出和输出。输入时某种编程语言,输出是某个机器平台的目标语言。分为前端和后端,前端处理输入语言,后端处理输出相关部分,如要翻译成目标机器指令集,如何将前端翻译成后端。编译器可看成多个阶段构成的“流水 线”结构。 ...原创 2018-11-27 14:07:11 · 379 阅读 · 1 评论 -
编译原理之词法分析
首先说明这是网易云课堂中国科学技术大学华保健老师的课程《编译原理》听课笔记,大部分内容是ppt资料,为了方便记忆,写了如下笔记。词法分析器的任务 首先看编译器结构:前端又可以分为:语义分析器也叫类型检查器。词法分析器结构又为词法分析器将代码切分为单词,下面是例子: x,y这些就是记号,EOF也是记号,记号是个大集合。记号的数据结构定义字符流变...原创 2018-11-28 14:49:06 · 4154 阅读 · 0 评论 -
Linux嵌入式汇编解读
AT&T汇编语法和Intel语法大致相同,一个从左到右,一个从右到左,AT&T是寄存器前面加%,立即数前面加$,Intel语法 AT&T语法 mov eax,8 movl $8,%eax mov ebx,0ffffh movl $0xffff,%ebx int 80h int $0x80 立即数16位后面是h 16位用0x表...原创 2018-10-29 17:19:56 · 618 阅读 · 1 评论 -
指针巧记方式
巧计方式就是倒着读比如下面char * const s 可以读作 s is a const pointer to char,也就是s是一个常量指针指向一个char类型。此时s指向固定,但是指向地址的内容可变。 所以如下const char * s;s is a pointer to char const,即s是一个指针指向一个常量char类型。 此时s指向可以可变,指向地址的内容...原创 2018-09-14 15:58:35 · 1730 阅读 · 4 评论 -
如何在main()函数之前执行一些代码
在控制台程序中,main函数是用户定义的执行入口点,当程序编译成功之后,链接器(Linker)会将mainCRTStartup连接到exe中,exe执行时,一开始先mainCRTStartup,这是因为程序在执行时会调用各种各样的运行时库函数,因此执行前必须要初始化好运行时库,mainCRTStartup函数会负责相应的初始化工作,他会完成一些C全局变量以及C内存分配等函数的初始化工作,如果使用C...原创 2018-09-14 15:21:04 · 9073 阅读 · 0 评论 -
全局初始化变量/全局未初始化变量/全局静态变量/局部变量的存储位置,作用域,与生命周期
比如如下程序代码片段int a = 0; char *p1; static int x = 10;int main(void) { int b = 0; char s1[] = "123"; char *p2; char *s2 = "123"; static int c =0; p1 = (char *)malloc(1...原创 2018-09-14 12:36:20 · 3839 阅读 · 3 评论