这是我第一次使用这样的网站,但我陷于困境。
为了完整起见,下面的背景部分是完整的,因为我不确定其中描述的任何操作是否可能导致了我当前面临的问题。
背景
我和一位同事在Visual Studio 2010(完整版)的控制台应用程序(具有默认设置)中编写了很多C++代码,用于大学分配。我们决定要尝试使用Winforms应用程序,因此在Visual Studio 2010中创建了一个应用程序,并从控制台应用程序导入了所有代码。我们面临以下问题:
完成上述操作后,我们的项目正在编译。
问题
当我们运行应用程序时,我们得到以下断言失败:
_CrtIsValidHeapPointer(pUserData)
该断言立即失败,似乎没有执行任何代码,因为当我在main的开头设置断点时,在调试中未达到断点(调用堆栈为空)。
我能够使应用程序运行的唯一方法是将CLR选项设置为/ clr:pure并删除所有使用boost的方法。
我有3个问题:
谢谢您的宝贵时间,我没有发布任何代码,因为我实际上不知道要发布什么...我不知道问题出在哪里。如果有人对发布什么代码有建议,我欢迎他们。
问候
布拉德
最佳答案
尝试回答您的特定问题:
main()
是代码的入口点,而不是整个可执行文件。可能会有大量的样板初始化以及所有全局静态对象的初始化。例如,在以下示例中,该函数在输入main之前运行: int SomeGlobal = SomeFunction();
int main (void)
{
...
}
为了进一步诊断问题,我将尝试一些操作:
pUserData
可能来自CString析构函数。确保所有字符串都已迁移到托管系统字符串。 关于c++ - 如何修复C++ Winforms应用程序中的_CrtIValidHeapPoint(pUserData)断言失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7837454/