我使用POCO lib工作网络。 我使用POCO / JSON的JSON数据。我的代码:
User user(context.marshal_as<std::string>(tbUserName->Text),
context.marshal_as<std::string>(tbFullName->Text),
context.marshal_as<std::string>(tbDisplayName->Text),
context.marshal_as<std::string>(tbEmail->Text),
context.marshal_as<std::string>(tbPhoneNumber->Text),
context.marshal_as<std::string>(tbNamSinh->Text),
context.marshal_as<std::string>(tbPassword->Text),
context.marshal_as<std::string>(tbConfirm->Text)
);
string jsonString = user.serialize();
我在Client_Winform.exe中的0x00007FF93E507A7A
(ntdll.dll
)处抛出异常错误:
0xC0000005:访问冲突读取位置0xFFFFFFFFFFFFFFFF。
如果存在此异常的处理程序,则可以安全地继续该程序。
答案 0 :(得分:0)
您正在使用从某个函数返回为INVALID_HANDLE的句柄(INVALID_HANDLE为-1或0xFFFFFFFFFFFFFFFF)。当您尝试使用它时,它会被用作地址而您无权访问该地址(错误5是访问冲突)。
答案 1 :(得分:0)
使用Visual Studio的代码分析来跟踪代码中错误所在的确切位置。 https://msdn.microsoft.com/en-us/library/ms182028.aspx 这些错误消息的问题不是理解原因(坏句柄)而是找到这个地方。由于您的代码在没有错误的情况下通过编译,并且在许多情况下,将在多台计算机上平稳运行并且仅在其中一台计算机上崩溃,因此您需要关注崩溃的位置。
答案 2 :(得分:0)
当您有多平台项目(即程序集)时,可能会发生这种情况。意思是,如果您确实有一个 x86 项目和另一个 x64 项目。在错误的平台下构建项目时会出现问题。例如,在 x86 下和消费者代码中引用的 x64 程序集构建正在尝试调用特定函数。因为,对于这种混合平台程序集,参考计算导致 x00000005 或 xFFFFFFFF 类型的位置,这是侧 RAM(即操作系统部分)中的受限区域。因此,它会抛出异常,其中包含“访问冲突异常读取位置...”之类的消息。我找到的解决方案是确定并应用准确的平台到相关项目。我再次从 repo 中检索了全新的代码并在特定平台下构建,此问题消失了。