使用 log4cpp 时访问冲突写入位置

Posted

技术标签:

【中文标题】使用 log4cpp 时访问冲突写入位置【英文标题】:Access violation writing location when using log4cpp 【发布时间】:2021-08-14 12:54:53 【问题描述】:

我successfully为 Visual Studio 2005(调试模式)编译了 log4cpp。

并创建了一个test 控制台应用程序。链接编译成功。

但是当我在调试模式下启动它时,它会抛出一个错误:

Log4CppClient.exe 中 0x772febc3 处未处理的异常:0xC0000005: 访问冲突写入位置0x00000014。

这是 Visual Studio 中输出窗口的内容:

'Log4CppClient.exe': Loaded 'D:\MyLog4Cpp\Debug\Log4CppClient.exe', Symbols loaded.
'Log4CppClient.exe': Loaded 'C:\Windows\System32\ntdll.dll', No symbols loaded.
'Log4CppClient.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', No symbols loaded.
'Log4CppClient.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', No symbols loaded.
'Log4CppClient.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.42_none_ef74ff32550b5bf0\msvcp80d.dll', Symbols loaded.
'Log4CppClient.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.42_none_ef74ff32550b5bf0\msvcr80d.dll', Symbols loaded.
'Log4CppClient.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', No symbols loaded.
First-chance exception at 0x772febc3 in Log4CppClient.exe: 0xC0000005: Access violation writing location 0x00000014. Unhandled exception at 0x772febc3 in Log4CppClient.exe: 0xC0000005: Access violation writing location 0x00000014.

编辑:这是项目: https://github.com/LinArcX/MyLog4Cpp

【问题讨论】:

看起来像一个空指针解引用。 异常后闯入调试器,看看什么变量是空指针。 'C:\Windows\SysWOW64\msvcrt.dll' 可能是您的错误。我认为它应该在 dll 之前以 d 结尾。你确定你链接到log4cpp的调试版本? @drescherjm 是的,我链接到了log4cpp 的调试版本。 @MawgsaysreinstateMonica 2) 添加了存储库。 【参考方案1】:

Access Violation 表示您试图访问您无权访问的内存地址。

在您的情况下,您正在尝试写入地址 0x00000014,但您没有这样做的权限/特权。

请分享您的代码以获取更多详细信息。

(也许您使用的是指针而不先为其分配地址?)

【讨论】:

感谢您的解释。我编辑了帖子并添加了我的代码存储库。

以上是关于使用 log4cpp 时访问冲突写入位置的主要内容,如果未能解决你的问题,请参考以下文章

例外:使用 strcpy_s 时访问冲突写入位置

写入位置0x00460000时发生访问冲突,这是啥原因?

写入位置时访问冲突

Log4cpp:在 UTC/GMT 时区打印日期

链表访问冲突写入位置

opencv中的访问冲突写入位置