使用dm.free后出现access violation at 0x77c12a16错误(100分)

  • 主题发起人 主题发起人 fancypansy
  • 开始时间 开始时间
F

fancypansy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DataModule中调用完一个函数后,使用dm.free,程序运行至此出现'access violation at 0x77c12a16:read at address 0x02339814',process stopped.
的错误。
请各位大侠们帮忙看看是什么问题?
在线急等!
 
这个错误一般情况是你调用了内存中不存在的对像造成的.
你仔细检查一下代码,如果你查不出来就把出错代码贴出来.
 
补充一下,我在前面已经调用过一个函数,也做了释放,然后在这个函数里又重新创建,释放就有问题了。
代码如下:
function MakeDB(ShopIndex:integer):Boolean;
var
rt:Boolean;
begin
rt:=True;
try
Application.Initialize;
Application.CreateForm(TDM, Dm);
except
end;

try
DM.ADOConn.Connected := False;
DM.ADOCOnn.Connected := True;
DM.MoveDataOutProc;
Except
rt:=False;
end;
DM.Free;
Result := rt;
end;

function MergeDB(ShopIndex:integer):Boolean;
var
rt:Boolean;
begin
rt:=True;
try
Application.Initialize;
Application.CreateForm(TDM, Dm);
except
end;

try
DM.ADOConn.Connected := False;
DM.ADOCOnn.Connected := True;
DM.MoveDataInProc;
Except
rt:=False;
end;
DM.Free;//程序先执行上个函数无问题,执行至此就出现av问题了
Result := rt;
end;
 
TO zswleo,
代码已经贴出,应该如何修改,谢谢!
 
肯定做了重复释放
干吗不这样
try
finally
end;
如果owner是application就不用手动释放了
 
可是我又重新创建了呀。
 
我测试了一下,没有发现你所说的那种错误啊.
我是在主窗体里调用的你上面的两个函数的.运行后一切都正常.
 
奇怪啦!
我调试运行过好多次,但只有一次没报错,其他时候都会出错啊。
 
但我试了很多次没有出现一次报错.
你看看问题是不是出在你调用这两个函数的地方.
 
问题还是没解决,我再贴出报错的画面(不可以上传附近吗?晕死!)
错误信息:'access violation at 0x77c12a16:read at address 0x02339814',process stopped.
点击确定按钮,继续按F8,
CPU:
mov ebx,[esp]
push ecx
push ebx
call +$00028ccy
or a1,a1
jz +$0c
pop ebx
pop ecx
push $00
push ecx
call ntdll.ZwContinue
jmp +$0b
pop ebx
pop ecx
push $00
push ecx
push ebx
call ntdll.NtRaiseException ---->到此,执行不下去了
add esp, -$14
mov [esp],eax
mov [esp+$04],$00000001
........

附加说明,我写的是一个dll,用delphi写的host application来调试不会出错,但是,用另一个host application (其中有调用VC写的dll),运行就会出错。
 
你释放了正在使用的东西
 
to dcs_dcs
我的这个函数MergeDB执行完了,难道不应该释放吗?
还有,就算我后面还要用到dm的话,也有重新create啊
我是释放了正在使用的东西还是
引用了已经释放的东西呀?
 
不是高手,遇到过类似问题,说下自己看法
在DM.Free后加一个DM:=NIL;
Free并非真的完全释放
 
很久很久没来,忘了结贴
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
679
import
I
I
回复
0
查看
962
import
I
后退
顶部