内存读写错误?

_菜菜 2013-12-24 08:44:16
在窗口上加了个动态创建按钮的代码后,一关闭窗口就报内存错误,是咋回事?

for i := 1 to ygcount do
begin
btn[i] := TBitBtn.Create(Page1);
btn[i].DragMode := dmAutomatic;
btn[i].Parent := Page1;
btn[i].Top := Page1.Top - 15;
if i = 1 then
btn[i].Left := 4
else
btn[i].Left := ((i - 1) * btn[i - 1].Width) + 4;
btn[i].Width := 50;
btn[i].Height := 40;
btn[i].OnDragDrop := BtnDragDrop;
btn[i].Visible := True;
end;
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码客 2014-02-27
  • 打赏
  • 举报
回复
我也是老是不定期出现这个错误。请问兄弟你解决了没有?
sololie 2013-12-25
  • 打赏
  • 举报
回复
精简到可以重现这个错误就可以了
sololie 2013-12-25
  • 打赏
  • 举报
回复
不是让你上这些,是让你贴你的程序,贴完整点,如果代码很多,你精简下,精简到可以重新这个错误就可以了,然后把相对完整的代码贴上来看看

或者你把项目上传到这里,然后把下载地址贴上来
_菜菜 2013-12-25
  • 打赏
  • 举报
回复
引用 3 楼 sololie 的回复:
上更多的完整的代码
@SmallPoolWasFull: {Insert this as the first partially free pool for the block size} mov ecx, TSmallBlockType[ebx].NextPartiallyFreePool mov TSmallBlockPoolHeader[edx].PreviousPartiallyFreePool, ebx mov TSmallBlockPoolHeader[edx].NextPartiallyFreePool, ecx mov TSmallBlockPoolHeader[ecx].PreviousPartiallyFreePool, edx mov TSmallBlockType[ebx].NextPartiallyFreePool, edx {Unlock the block type} mov TSmallBlockType[ebx].BlockTypeLocked, False {All ok} xor eax, eax {Restore registers} pop ebx {Done} ret {Align branch target} nop nop 就是这段代码
sololie 2013-12-25
  • 打赏
  • 举报
回复
上更多的完整的代码
_菜菜 2013-12-24
  • 打赏
  • 举报
回复
引用 1 楼 unearth 的回复:
F7,跟踪一下窗体关闭事件,做了什么 ? 这段代码看不出是什么问题。
单步调试到GETMEM.INC的 mov TSmallBlockPoolHeader[ecx].PreviousPartiallyFreePool, edx 这段汇编代码处,但是汇编代码不太懂,所以看不明白
孤独de猫 2013-12-24
  • 打赏
  • 举报
回复
F7,跟踪一下窗体关闭事件,做了什么 ? 这段代码看不出是什么问题。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧