PE学习前的一些小知识
位移运算
1、与运算 &
2、或运算 |
3、非运算 ~
4、异或运算 ^
5、移位运算 << >>
内存分配,文件读写
宏定义说明
一、无参数的宏定义的一般形式为:# define 标识符 字符序列
如:# define TRUE 1
# define PI 3.1415926
注意事项:
1、只作字符序列的替换工作,不作任何语法的检查
2、如果宏定义不当,错误要到预处理之后的编译阶段才能发现
二、带参数宏定义:#define 标识符(参数表)字符序列
# define MAX(A,B) ((A) > (B)?(A):(B))
代码 x= MAX( p, q)将被替换成 y=((p) >(q)?(p):(q)
注意:
1、宏名标识符与左圆括号之间不允许有空白符,应紧接在一起.
2、宏与函数的区别:函数分配额外的堆栈空间,而宏只是替换.
3、为了避免出错,宏定义中给形参加上括号.
4、末尾不需要分号.
头文件
#include "stdafx.h"
其实就是包含了其他程序写的代码,自己可以调用
在内存分配中,我们可能不知道自己到底需要多大的空间,这时需要用到malloc
而使用malloc,是在堆里面分配的,堆是需要使用结束后自己告诉系统,这块空间我不用了
PE文件的两种状态
一种是在硬盘里的,没有运行
一种是已经运行起来,内存里已经有了
硬盘对齐,内存对齐
以前技术不足,为了节省硬盘空间,使数据存储在硬盘中的时候,节与节之间的间隙比较小,而当把数据放入内存的时候,间隙又恢复了,所以有些程序:硬盘对齐:200h 内存对齐:1000h
但有些程序是现在开发的,技术比较好,硬盘内存对齐都是1000h
但是为什么要有分节呢,因为考虑到多开的概念
就相当于QQ开多个小号,每一个QQ都有一些相同的部分,只可读不可写,当我们使用小号时,就可以不改变这一部分,而只需要重新在内存里创建自己可以操控的可读可写部分
联合体
union Student
{
int x;
int y;
};
这样Student作为类型名
union
{
int x;
int y;
} Student ;
这样Student直接作为变量,类型是匿名的
比如我们要存储学号和身份证号,但我们存一个就可以了,就可以用联合体
PE学习前的一些小知识的更多相关文章
- bootstrap学习笔记(网页开发小知识)
这是我在学习Boostrap网页开发时遇到的主要知识点: 1.导航条navbar 添加.navbar-fixed-top类可以让导航条固定在顶部,固定的导航条会遮住页面上的其他内容,除非给<bo ...
- ITIL学习笔记——ITIL入门小知识
1. 什么是ITIL? ITIL即IT基础架构库(Information Technology Infrastructure Library)由英国政府部门CCTA(Central Computing ...
- VB6.0编程笔记——(2)开发环境准备&学习前导入
工欲善其事必先利其器,着手开始学习写代码之前,我们需要先准备好需要用到的工具.这篇文章会教大家部署好环境,同时会告知前期我们需要知道的一点内容(可以不用特别理解,只要记住用法就行,后续会深入展开介绍) ...
- 记录一下学习Android的小知识
目前要设计即时通讯的整体架构,包括服务端.Android.IOS.PC.平板等等系统,所以需要研究一下手机的实现方式,开始从Android入手,偶尔在这记录下小知识. ADT: 1.页面功能请求结构, ...
- 【python学习小知识】求绝对值和numpy和tensor的相互转换
一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
- python3开发进阶-Django框架学习前的小项目(一个简单的学员管理系统)
''' 自己独立写一个学员管理系统 表结构: 班级表: -id -grade_name 学生表: -id -student_name -grade 关联外键班级表 老师表: -id -teacher_ ...
- s性能优化方面的小知识
总结的js性能优化方面的小知识 前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够 ...
- golang拾遗:内置函数len的小知识
len是很常用的内置函数,可以测量字符串.slice.array.channel以及map的长度/元素个数. 不过你真的了解len吗?也许还有一些你不知道的小知识. 我们来看一道GO101的题目,这题 ...
随机推荐
- record terminal sessions
record terminal sessions asciinema https://asciinema.org/ # install $ brew install asciinema # Start ...
- Free Serverless
Free Serverless BFF https://cloud.google.com/functions/ 微服务 Function as a Servcie,FaaS https://segme ...
- nodejs 创建tcp/udp服务器和客户端
TCP server // https://nodejs.org/api/net.html const net = require("net"); // https://nodej ...
- Python爬虫_糗事百科
本爬虫任务: 爬虫糗事百科网站(https://www.qiushibaike.com/)--段子版块中所有的[段子].[投票数].[神回复]等内容 步骤: 通过翻页寻找url规律,构造url列表 查 ...
- JDK源码阅读-FileOutputStream
本文转载自JDK源码阅读-FileOutputStream 导语 FileOutputStream用户打开文件并获取输出流. 打开文件 public FileOutputStream(File fil ...
- 从微信小程序到鸿蒙js开发【13】——list加载更多&回到顶部
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 目录: 1.list加载更多 2.list回到顶部 3.<从微信小程序到鸿蒙js开发>系列文章合集 1.list加 ...
- m1款MacBook Air 使用3个月总结及原生运行于apple架构软件推荐
前言 我之前一直是一个坚定的Windows/Android党,大学的时候用过几台iPhone,感觉也就那样.这次m1版本的Mac一发布我直接又转回apple阵营了,11月份的时候官网订了一台m1 版本 ...
- 后端程序员之路 54、go 日志库
一个朋友写的日志库 https://github.com/vizee/echo go get -u -v github.com/vizee/echo package main import ( ...
- 后端程序员之路 6、Python fabric
直接写shell固然也很好,但是用python来写脚本,也是美滋滋.fabric是一个封装部署.多机操作等功能的python库. Welcome to Fabric! - Fabric documen ...
- go 在crontab里面运行报错 解决方案
问题背景 你高高兴兴的写好了一个go脚本,放到你的服务器上,打算定期运行这个脚本,你打开crontab -e, 然后输入: */1 * * * * go run /root/test/main.go ...