【Delphi】Linux版的IsBadReadPtr

linux上没有提供用户态的内存指针读写安全检测函数,这里使用异常包来简单实现IsBadReadPtr:

{$IFDEF UNIX}
function IsBadReadPtr(lp: Pointer; ucb: UINT): BOOL; stdcall;
begin
  try
    while ucb>0 do
    begin
      if PChar(lp)[ucb-1] <> #0 then
        dec(ucb)
      else
        dec(ucb);
    end;
    Result := False;
  except
    Result := True;
  end;
end;
{$ENDIF}

  IsBadWritePtr就不实现了,否则若是实现不完善会损坏原来的代码,其实普通的堆栈都是可读写的,而且我们大部分时候只是为了检测内存的大小是否足够,所以IsBadReadPtr在大部分场合可以代替IsBadWritePtr的

原文地址:https://www.cnblogs.com/caibirdy1985/p/10132837.html

时间: 2024-10-11 11:27:36

【Delphi】Linux版的IsBadReadPtr的相关文章

Linux版EPUB阅读器

Linux版EPUB阅读器 本文导航 -1. Calibre09% -2. FBReader23% -3. Cool Reader33% -4. Okular44% -5. pPub51% -6. epub63% -7. Sigil74% 如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了.专注阅读16世纪的书是非常困难的了,没人希望后台蹦出QQ聊天窗口.但是如果你非要在电脑上打开电子书的话,那么你需要一个电子书阅读软件.大多数出版物支持使用EPUB格式的电子书(电子出版物).幸运的

XAMPP 的 Linux 版 (x86 兼容处理器版)安装配置使用详细介绍,教你建好一个LAMPP站!

XAMPP 的 Linux 版 (x86 兼容处理器版) 以前被称作 LAMPP,但为了避免误解,将其重名命为 ?XAMPP 的 Linux 版?.所以,如果您在寻找 LAMPP下载.安装.配置.使用方法,您就来对地方了. 安装过程仅 4 个步骤 步骤 1:下载 只需点击下面的链接.下载最新版总是好主意.:)完整的下载列表(老版本)可在 SourceForge 找到. 详细的 XAMPP 各版本更新记录可在 发布说明 中找到. XAMPP Linux 1.8.2 107 MB Apache 2.

Linux版Skype v1.9更新:黑色主题、静音通知

微软今天为Skype for Linux用户推送新的更新,Linux版Skype迎来Alpha 1.9版本,新增支持黑色主题,另外还有通知静音等等. 下面是IT之家为大家整理的更新内容: 对特定的对话新增通知皇冠体育功能 新增黑色主题支持(设置--个性化--黑色主题) 新增完全禁用表情符号 新增支持/ me 命令 新增支持系统级HTTPS代理 提升消息引用--现在支持Ctrl + C 悬停消息时间显示完整日期/时间 Electron电子更新到v1.3.6 日志记录器性能和安全修复

nbtstat Linux版源码, 通过IP获取主机名

nbtstat Linux版, 通过IP获取主机名/* NETBIOS name lookup tool - by eSDee of Netric (www.netric.org) * yeh.. i was really bored :-) * * [[email protected]] gcc -o nbtstat nbtstat.c && ./nbtstat 10.0.0.4 * Request sent, waiting for reply... [ctrl-c to abort]

Java 反编译工具 —— JAD 的下载地址(Windows版/Linux版/Mac OS 版)

Java 反编译工具 —— JAD 的下载地址. 各种版本哦! Windows版,Linux版,Mac OS 版,等等 下载地址: http://varaneckas.com/jad/ Java 反编译工具 -- JAD 的下载地址(Windows版/Linux版/Mac OS 版),布布扣,bubuko.com

读取指定目录下的所有文件(windows 和 linux 版)

笔者这里用到了OpenCV,如果不需要用OpenCV代码的话,可以将这部分代码去掉即可. windows  vs2015环境代码如下: #include <io.h> // 结构体struct _finddata_t需要用到 #include <opencv2/opencv.hpp> using namespace cv; using namespace std; char * fileLoadPath = "E:\\ubshare\\Cars\\102051724100

Zabbix Agent安装(linux版)

1. 查看linux系统版本及内核: [[email protected] tools]# uname -r 2.6.32-431.3.1.el6.x86_64 2. 创建用户名和组: [[email protected] ~]#groupadd zabbix [[email protected] ~]#useradd –g zabbixzabbix 3. 创建新目录: [[email protected] ~]# mkdir /root/tools [[email protected] ~]#

将 ASP.NET 5 应用作为 docker 镜像发布 (Linux版)

将 ASP.NET 5 应用作为 docker 镜像发布 (Linux版)? 提示 本文更新时间:2015年12月20日. 注解 如果你需要将 docker 镜像运行在Windows平台,或者使用在 Visual Studio 2015 上,请看稍后的一片博文(目前未发布) 将 ASP.NET 5 应用作为 docker 镜像发布 (Windows版) 创建 ASP.NET 5 项目? 首先,你需要一个已经完成的 ASP.NET 5 应用,如果还没有的话,可以参考 在 Mac OS 上创建的 A

XAMPP(Linux版-x86兼容)官网下载

欢迎光临 XAMPP 的 Linux 版 (x86 兼容处理器版)顺便提一下:该软件以前被称作 LAMPP,但为了避免误解,我们将其重名命为 »XAMPP 的 Linux 版«.所以,如果您在寻找 LAMPP,您就来对地方了.;) 如果你遇到任何有关 XAMPP 的问题,敬请与我们联系.这将帮助我们改进 XAMPP,使其更易于使用. 安装过程仅 4 个步骤 步骤 1:下载 只需点击下面的链接.下载最新版总是好主意.:)完整的下载列表(老版本)可在 SourceForge 找到. 详细的 XAMP