本文迁移自本人网易博客,写于2013年5月31日。

昨天程序还好好的,后来虚拟机装了IE7,也装了些其他的程序,今天调试程序发现一运行到如题所示FTP操作,内存就猛飚,就好像陷入了死循环;
重装了FTP组件,还是如此;一天了,还没找到解决方法;
CInternetSession::CInternetSession构造函数中第三个参数:
dwAccessType
The type of access required. The following are valid values,
exactly one of which may be supplied:
INTERNET_OPEN_TYPE_PRECONFIG Preconfigured (in the registry). This access type is set as the default.
INTERNET_OPEN_TYPE_DIRECT Direct to Internet.
INTERNET_OPEN_TYPE_PROXY Through CERN proxy.
默认使用的是第一个,在IE6和IE9环境下都可用;
换成第二个后,之前安装了IE7又卸载了,但卸载不完整的IE6环境下也可以用了;当然,IE6和IE9也可用;
换成第三个后,凡是IE6环境都可以用,但IE7和IE9获取到的构造函数指针为NULL;
又经过一上午时间的奋战,
过程:将程序缩减到最小程度,发现还是连接不上FTP;
单独写个小程序,在InitApplication主程序中连接FTP,可以连接上;
将程序缩减到最小程度,并在InitApplication主程序中连接FTP,可以连接上;
推论:InitApplication主程序之前,定义某些类的对象,调用构造函数,若构造函数内是本地的内容,就不会出错,若是FTP相关的,就会出错了;
解决方法:避免出现在InitApplication主程序之前,调用复杂构造函数写类的全局变量;
当然:在 InitApplication主程序 之前,写FTP相关的代码,也有可以运行的时候;
问题描述:打开autocad,使用appload加载arx,连接ftp是没问题的;
但使用exe程序调用autocad,自动加载arx就连接不上ftp了;这种情况下,就必须在 InitApplication主程序之后,写FTP相关的代码;