使用 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 时访问冲突写入位置的主要内容,如果未能解决你的问题,请参考以下文章