gpt4 book ai didi

C++ ofstream System.AccessViolation

转载 作者:行者123 更新时间:2023-11-30 04:02:21 26 4
gpt4 key购买 nike

我有一个问题。我正在写入日志文件,但是当我写入时应用程序抛出:

**** 中发生类型为“System.AccessViolationException”的未处理异常

附加信息:试图读取或写入 protected 内存。这通常表明其他内存已损坏。

我正在使用的代码(非托管)是这个:

inline bool writeLog(string message)
{
ofstream myfile;

myfile.open(mStrSource.c_str(), ios::in | ios::out | ios::app);

if(!myfile.is_open())
{
throw "Unable to open the file: " + mStrSource;
}

myfile << "TESTE" << endl;

myfile.close();

return true;
};

收到此错误时,代码指向文件 fstream 的 _Lock():

virtual void __CLR_OR_THIS_CALL _Lock()
{ // lock file instead of stream buffer
if (_Myfile)
_CSTD _lock_file(_Myfile);
}

其他信息:

在 VS2010 下开发(最初项目是 Winx32,现在是 Winx64)(.NET Framework 4)。

ofstream 的 open() 方法创建文件并且文件是可写的,但是当尝试写入文件时抛出异常。

先谢谢大家

最佳答案

检查以确保您的应用程序有权写入该位置的文件。 Windows 中的标准用户无法访问整个文件系统(尤其是写入)。要么要求应用程序具有管理员权限(不推荐用于“普通”应用程序),要么写入标准用户可以访问的位置(例如我的文档目录)。

此外,请确保该文件未被其他应用程序(如 Excel 或 Word)打开以独占使用。他们有打开文件时锁定文件的习惯。

另一件需要注意的事情是在开发过程中,有时 .NET 运行时/VS 调试器会在崩溃后锁定您正在使用的文件。尝试关闭/重新打开 Visual Studio 来解决这个问题。

关于C++ ofstream System.AccessViolation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25118339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com