VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1920|回复: 9

为什么程序关闭的时候报 access violation add address 错误?

[复制链接]

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-29 17:40:01 | 显示全部楼层 |阅读模式
每次程序关闭的时候就会报这个错,这是怎么回事呢
回复

使用道具 举报

0

主题

27

帖子

24.00

积分

新手上路

Rank: 1

积分
24.00
发表于 2020-3-4 03:15:01 | 显示全部楼层
给点代码才知道
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-3-4 23:15:01 | 显示全部楼层
这得给什么地方的代码啊?我关闭程序就直接调用Application->Terminate(),然后就报错,但是我再这里下断点跟进去又么有错,可以正常退出
回复

使用道具 举报

0

主题

14

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-5 22:00:01 | 显示全部楼层
这个问题不好说,估计什么东西还没关闭,就被你 Terminate 了,但设断点运行却给了足够的时间来完成那个任务
回复

使用道具 举报

0

主题

12

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-3-8 23:00:02 | 显示全部楼层
有内存被释放后,又访问了。
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-14 11:30:01 | 显示全部楼层
看看运行程序时都执行了哪些操作,导致了这个错误。
比如:如果运行程序以后,直接退出就出错,那就可能是在程序启动一些事件中,某段代码有问题,可能指针越界之类的。试着屏蔽该段代码或其中部分代码,看看还出错不,以此判断代码错误的位置。
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-3-24 09:00:01 | 显示全部楼层
我打开了一个子窗口,在子窗口运行部分代码后,关闭子窗口,在关主窗口就出错,但是关子窗口的时候没出错
回复

使用道具 举报

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-26 23:15:01 | 显示全部楼层
你最好把你程序中动态分配的内存显式释放掉,比如:free,dealloc...,Close等等,特别是一些对象的实例释放,比如:form
回复

使用道具 举报

0

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-27 16:45:01 | 显示全部楼层
个人认为你在关闭子窗口和主窗口时的问题。一般的一个form1调用另外一个form2(动态创建的)这个流程:Form2=new TForm2(this);
          Form2->ShowModal();
          Form2->Close();
          Form2=Null;
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-4-2 00:15:01 | 显示全部楼层
谢谢如风,我把程序改了一下,可以了

现在我想在子窗口关闭的时候发消息给主窗体,把子窗体指针delete然后再赋NULL

下面是添加的消息映射
    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_FORM_CLOSE,TMessage,CMMessage)
    END_MESSAGE_MAP(TForm1)

自定义消息,程序一起来运行到这里END_MESSAGE_MAP(TForm1)这里就报了stack overflow,这是为什么呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表