2 timelesss timelesss 于 2016.02.25 06:30 提问

求帮忙看下为什么程序调用了西沟函数导致程序整个不能运行

写说明一下代码,代码主要是要在控制台模拟浏览器对tab和网页前进后退的一些操作

再说明一下问题,问题在于brwosertab类和webinformation类的西沟函数,一旦在这两个类的西沟函数里面写上delete 指针名字;整个程序就不能运行了,最关键的是我不太明白为什么程序要调用这两个函数,因为我感觉我都是动态对象啊。
最后说明一下,我很菜,只有一点java编程的经验,所以第一次应对c++我真的需要一些帮助。谢谢你们了!

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.25 08:16

要看你完整的代码。你delete的是什么,如果你的指针指向常量或者不可以delete的内存,就会报错。如果释放了还在使用的内存,那么在访问到这些内存的时候也会报错。
如果你用了webbrowser这样的com对象,你需要调用
CoDisconnectObject和Release
http://stackoverflow.com/questions/8273910/how-to-cleanly-destroy-webbrowser-control

henuyx
henuyx   2016.02.25 10:11

析构函数中delete的都是你自己申请的内存,不应该析构对象本身。
还有是不是这两个类的析构函数中delete的是同一块内存呢?

John_ToStr
John_ToStr   Rxr 2016.02.25 18:30

如果你用了webbrowser这样的com对象,你需要调用CoDisconnectObject和Release
http://stackoverflow.com/questions/8273910/how-to-cleanly-destroy-webbrowser-control

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
查看某个程序都调用哪些API函数
用于查看某个程序都调用了哪些API函数,以此来了解某个程序的功能是如何实现的,可查看函数名称和库名,支持拖放操作
JDK更换导致以前软件不能运行
由于想对lambda表达式有一个理解,所以在电脑上安装了jdk1.8,但是却造成以前的系统不能打开,因为以前的系统是基于jdk1.6开发的。所以现在一运行就出现虚拟机报错的信息。最笨的方法就是还原~~~ ╮(╯▽╰)╭ 迫于无奈,只好卸载掉JDK1.8,但是却还是运行不了。于是想到了清理注册表。
一个需要了解的DLL文件
求帮忙看下,这个DLL文件看不懂,为什么总是需要很长的描述呢
关于STM32使用RTC时复位后程序死在 RTC
在软件仿真时如果不需要配置,则程序会死在 RTC_WaitForSynchro() 函数中。而下载到硬件上时,有时候可以跑,有时候也会在该函数中死循环。 可能的原因: 首先,一定要确认是否使能了对后备寄存器和RTC的访问。 系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操 作。执行以下操作将使能对后备寄存器和RTC的访问:  ● 设置寄存器RC
windows平台下删除注册表后应用程序无法使用的情况
windows平台下删除注册表后应用程序无法使用的情况  相信大家都有在Windows系统下不小心删除注册表的经历,或者因为注册表出现问题从而导致某个应用程序不能使用。在很多情况下,大家所遇到的只是某个应用程序的注册表出现问题不能使用。这个在网上有很多方面。  笔者在这里介绍一下笔者所遇到的问题及解决的方法。笔者不小心删除了所有的注册表文件,也就是说所有的应用程序都不能使用,尝试了很多方法都没有解决
IAR工具Release后导致程序无法运行
IAR EWARM编译器和其他厂家的C编译器相比非常高效,但是当程序里面包含对时序要求比较严格的代码的时候,IAR常常会把这些代码过渡优化,破坏了时序的要求,造成程序错误,在程序代码比较紧的时候又必须优化, 这是可以在包含时序要求比较严格的代码的函数前面,用#pragma optimize=none不进行优化或者#pragma optimize=low进行低级优化, 例如#pragma optim...
MyEclipse 不能运行java程序原因分析
My Eclipse运行好好的,突然不能运行java程序(main).我遇到如下两种情况: 1.run Configurations下面配置的java 程序太多。 解决办法:     打开 run Configuratons,删除 java application 下面的java程序。 2.项目是maven项目,pom配置文件没有classes的路径。 解决办法:      在
360更新补丁之后,程序无法运行解决历程
上班打开电脑,360蹦出安装补丁,
在C++ 程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?
C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。
中断处理程序不能使用printf的本质
vxworks 中断处理程序之所以不用printf,本质在于printf是将信息输出到标准输出设备(STDOUT)中, 整个标准输出设备是一个全局变量,由于有semTake操作,那么就会发生阻塞,vxworks属于硬实时操作系统,不能在规定的时间内完成操作即会死机或复位。所以vxworks不用printf的原因在于阻塞。 网上说printf 因为引用全局变量stdout,所以是不可重入的。这个稍微