当前位置: 首页 > news >正文

网站正在建设中html网站建设faq系统指什么

网站正在建设中html,网站建设faq系统指什么,互联网外包公司,郑州代理记账网站建设[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

[简介]
常用网名: 猪头三
出生日期: 1981.XX.XX
QQ: 643439947
个人网站: 80x86汇编小站 https://www.x86asm.org
编程生涯: 2001年~至今[共22年]
职业生涯: 20年
开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
开发工具: Visual Studio、Delphi、XCode、Eclipse、C++ Builder
技能种类: 逆向 驱动 磁盘 文件
研发领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全
项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测

[序言]
从Delphi XE时代开始, 编译器就默认使用宽字节模式编译了. Char默认转换为WChar, 然后一切API函数默认使用W模式. 这是非常好的开端. 但是也造成在代码迁移的过程中, 会出现非常隐蔽的BUG.

[下面是非常重要的细节, 一定要认真理解, 如果看不懂, 那就证明你的程序, 后期会有很大的安全隐患]

代码1: 静态数组

char_TargetPathBuf     : array[0..4] of Char; // 声明具有5个Char的静态数组
var int_Size : Integer := SizeOf(Char) ;      // 返回2, 因为默认是WChar, 具有2个字节Bytes
var int_Size_Array_Len : Integer := Length(char_TargetPathBuf) ; // 返回5, 表示该数组有5个元素
var int_Size_Array     : Integer := SizeOf(char_TargetPathBuf) ; // 返回10, 表示该数组占用10个字节.

注意如下表达式: 

SizeOf(char_TargetPathBuf) = Length(char_TargetPathBuf) * SizeOf(Char) // 两者是等效的. 但是推荐使用右边的写法.

初始化静态数组:

ZeroMemory(@char_TargetPathBuf, Length(char_TargetPathBuf)*SizeOf(Char)) ;
ZeroMemory(@char_TargetPathBuf[0], Length(char_TargetPathBuf)*SizeOf(Char)) ;
FillChar(char_TargetPathBuf, SizeOf(char_TargetPathBuf), 0) ;
FillChar(char_TargetPathBuf, Length(char_TargetPathBuf)*SizeOf(Char), 0) ;

这里要注意: char_TargetPathBuf表示具有5个Char字符的静态数组而不是数组指针, 因此在使用ZeroMemory的时候, 通过@char_TargetPathBuf取得该静态数组的指针. 也可以通过@char_TargetPathBuf[0]获取.

代码2 动态数组

dya_TargetPathBuf : array of Char ; // 声明一个动态数组, 名为dya_TargetPathBuf
SetLength(dya_TargetPathBuf, 5) ;  // 为动态数组初始化为5个Char字符容量大小, 内容默认是0
var int_Size_Array_Len : Integer := Length(dya_TargetPathBuf) ; // 返回5, 表示该数组有5个元素
var int_Size_Array     : Integer := SizeOf(dya_TargetPathBuf) ; // 返回4, 这里为什么会返回4, 而不是10呢?

重点注意: SizeOf(dya_TargetPathBuf) = 4, 无论你分配多大的容量, 都是等于4.
因为dya_TargetPathBuf是动态数组类型, 它默认是一个指针类型, 它是一个指向存放数组指针的指针. 也就是通常说的二级指针. 下面用代码表示:

var dya_Address : PCardinal := @dya_TargetPathBuf ; // 通过"@"操作符, 取得动态数组指针.
var dya_Array_Pointer : Cardinal := dya_Address^;   // 通过"^"操作符, 取得指向数组指针. 这个就是真正指向数组数据的指针了.

明白上面的两行代码之后, 就可以理解下面的"动态数组初始化"的写法.

ZeroMemory(PChar((@dya_TargetPathBuf)^), Length(dya_TargetPathBuf)*SizeOf(Char)) ;
ZeroMemory(Pointer(dya_TargetPathBuf), Length(dya_TargetPathBuf)*SizeOf(Char)) ;
FillChar(dya_TargetPathBuf[0], Length(dya_TargetPathBuf)*SizeOf(Char), 0) ;

[总结]
上面的内容是非常重要且很细节的东西, 这是安全编程必不可少的知识点. 希望对大家有帮助.

[下面附上截图, 让大家理解得更加透彻]

http://www.yayakq.cn/news/292070/

相关文章:

  • 国外可以用什么网站做问卷长春软件公司排名
  • 网站建设费摊销年限做网站用微软雅黑
  • wordpress全站使用cdn做词频分析的网站
  • 江西省美丽乡村建设公布网站wordpress淘宝ued
  • 网站优化注意事项网上商城网站建设设计方案
  • o2o平台网站建设欧美vpswindows另类
  • 甘肃建设厅网站官网wordpress文章404错误
  • 哈尔滨网站建设的公司网站模板有哪些
  • 婴幼儿用品网站开发意义wordpress js错误
  • 株洲网站建设制作asp.net网站
  • 现在做一个网站系统多少钱wordpress移动端页面模板
  • 网站设计师培训中心软件工程名词解释
  • 你做的网站可视区域多少中国高清vpswindows在线
  • 怎么自己开网站云主机推荐
  • 阿里云电影网站建设教程课程平台网站建设报价
  • 郑州住房和城乡建设局网站信阳做网站 汉狮网络
  • 广州 环保 凡人网站建设电销外呼软件
  • 产品销售类网站 模板电商网站建设基础ppt
  • 网站中的搜索功能怎么做网页qq邮箱怎么在手机下文件怎么打开wordpress
  • 中国建设银行招聘信息网站宽屏网站
  • 中国有没有一家做茶叶的网站博客主题Wordpress
  • 网站服务器ip地址怎么查wordpress一个域名多个主题
  • 网站架构设计师面试技巧做外贸网站如果是东西杂会不会不好推广
  • wordpress 哪些网站做阿里巴巴网站 店铺装修免费吗
  • 如何做好网站推广营销生鲜网站建设规划书
  • 没有基础怎么学网站建设个人简历简短范文
  • 有关网站建设的图片设置网站404页面
  • 营销型网站的功能wordpress文章输出函数
  • 新氧整形网站开发模版wordpress 手机不显示
  • 网站设计 布局网站发多少篇文章开始做外链