我的开发环境是[Windows 7; visual studio 2010; 86]。使用new/delete,但不使用malloc/free在C++代码中崩溃
我有一个为服务器2003长时间后建立的dll。当我在我的项目中使用它并按照新/删除序列使用类时,应用程序在删除调用期间崩溃。即使在新建和删除之间没有任何其他调用,我也进行了验证。当我用malloc/free替换new/delete时,没有崩溃。如果我仅仅声明一个没有新的类的实例,当范围退出时不会发生崩溃。
任何想法可能会出错?这是我们公司的内部图书馆,所以我将无法命名它和其他类似的东西。
附加信息: 要首先使用此库,我必须关闭VS功能“将wchar_t作为内置类型”。
代码很简单
{
CLogger * myLog = new CLogger();
delete myLog; // Crash happens here
}
{ // No crash here
CLogger MyLog;
}
{
CLogger * myLog = (CLogger *) malloc (sizeof(CLogger));
free (myLog); // This does not crash.
}
这是专利文献,我不能发布的构造函数和析构函数。
请张贴代码。有一百万件事情可能是错误的,其中没有一件可以在不查看代码的情况下确定。 – 2010-06-18 16:49:00
请向我们展示您使用新建和删除的实际代码行。这个类的构造函数和析构函数也会有帮助。 – 2010-06-18 16:50:54
代码是简单 { CLogger * myLog =新CLogger(); delete myLog; //碰撞发生在这里 } {//此处没有崩溃 CLogger MyLog; } { CLogger * myLog =(CLogger *)malloc(sizeof(CLogger)); free(myLog); //这不会崩溃。 } 这是专利文献,我不能发布的构造函数和析构函数。 – Zhinkaas 2010-06-18 16:53:19