Dll调用问题,分配内存出错
然后进行调用时,会报内存ReadError
但如果用exe将封装单元引入,则完全正常,有没有大牛能帮我分析一下???
DllUnit
type
PArpRec = ^TArpRec;
TArpRec = record
Ip: string[15];
Index: Integer;
Mac: array[0..7] of Byte;
end;
function _refreshArpTable: Boolean;
var
i, j: Integer;
dwResult, dwSize: DWORD;
p_arptable: PMibIpNetTable;
p_arprow: PMibIpNetRow;
szTemp: string;
parp: PArpRec;
begin
szTemp := '';
p_arptable := nil;
for i := 0 to _arpTable.Count - 1 do
FreeMem( PArpRec( _arpTable.Objects[i] ) );
_arpTable.Clear;
dwSize := 0;
dwResult := GetIpNetTable(p_arptable, dwSize, False);
// if p_arptable = nil then
//报错的就是这行
p_arptable := AllocMem(dwSize);
try
if NO_ERROR = GetIpNetTable(p_arptable, dwSize, False) then
begin
for i := 0 to p_arptable.dwNumEntries - 1 do
begin
p_arprow := AllocMem(SizeOf(TMibIpNetRow));
ZeroMemory(p_arprow, SizeOf(TMibIpNetRow));
Move(p_arptable^.table[i], p_arprow^, SizeOf(TMibIpNetRow));
parp := AllocMem( SizeOf( TArpRec) );
parp^.Ip := inet_ntoa( in_addr( p_arprow^.dwAddr ) );
parp^.Index := p_arprow^.dwIndex;
for j := 0 to 5 do
parp^.Mac[j] := p_arprow^.bPhysAddr[j];
_arpTable.AddObject(parp^.Ip, TObject( parp ));
end;
end;
finally
// if p_arptable <> nil then
FreeMem(p_arptable);
end;
end;
错误信息:
Access violation at address 014663E2 in module 'Arpwatch.dll' write of address 0147FDCC
在线等待,不胜感谢!!!
相关推荐
Python优化技巧之利用ctypes提高执行速度
ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用C DLL中的函数。今天我们就来详细探讨下ctypes库的使用技巧
把 ABAP 采购订单增强做成一条可控流水线:BAdI ME_PROCESS_PO_CUST 全流程实战
摘要: SAP MM模块的ME_PROCESS_PO_CUST BAdI提供了采购订单全生命周期的增强点,覆盖从ME2*N事务到BAPI调用的各类场景。该接口通过INITIALIZE、OPEN、PROCESS_*系列方法、CHECK等组成完整处理流水线,支持字段控制、业务校验、数据派生等功能。关键注意事项包括:PROCESS_*方法仅在相关对象变更时触发、字段控制需区分参考键与动态规则、避免递归调用等。该BAdI采用面向对象设计,通过IF_PURCHASE_ORDER_*等接口操作采购单据对象,而非直接修改
业务开关驱动的 SAP CRM WebClient UI 配置处理全流程解析
WebClient UI 与 Switch Framework 的深度耦合,使得“配置决定 + 开关裁剪 + 结果持久化”成为一个自洽的生命周期。理解这套机制后,你不仅能读懂 F2 窗口里的两个小勾,更能在项目中自如设计开关策略,实现功能灰度发布与性能优化。下一次当需求提出“根据模块授权动态隐藏视图”时,不妨考虑把业务逻辑下放到 Switch Framework,通过开关来优雅完成。
华为MetaERP # EBS → Fusion BC 预算模块【业务规则对齐实施指南】定位:迁移蓝图「业务规则映射章节」标准内容,承接主数据映射、余额迁移、预算校验逻辑迁移。> > 核心结
本文为EBS迁移至FusionBC预算模块的业务规则对齐实施指南,重点解析两系统预算模型差异及迁移方案。核心差异包括:EBS采用总账依附型三层占用模型,而FusionBC为独立多维引擎,支持自定义消耗阶段。实施路线分五步:全面梳理EBS预算规则(7类关键规则)、分层归类(A/B/C三类)、逐项对齐(重点处理占用规则和调整机制)、识别固有差异(5项架构级差异)、输出标准化交付物。特别强调不能简单照搬EBS规则,需通过配置+客户化改造实现业务目标,最终需通过测试用例验证规则落地一致性。迁移成功关键在于早期识别模
Windows CE 编程的十点忠告
Windows CE 编程的十点忠告


Windows SDK/API
