[英]SDL2/C++ File I/O Error
我正在测试一个游戏机制,其中将有两个文件(一个名为“X.txt”,另一个名为“Y.txt”)来跟踪您的 X 和 Y 位置。 它的工作方式是每次调用播放器的更新(即移动)时,程序都会将坐标写入 X 和 Y 文件。 当您关闭程序并重新打开该文件时,您将从上次关闭程序时所在的 X 和 Y 坐标开始。 我有两个问题:
1) 每次运行程序时,我都会从默认坐标 (0, 0) 开始,即使我告诉程序从文件中读取。
2)当我关闭程序时,我收到一条错误消息:
'FNTSTWE.exe 中 0x576812A7 (msvcp120d.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0xFEEEFEEE。
顺便说一下,错误是可变的,它们总是完全不同,这只是我遇到的众多错误之一。
此外,有时它会将我带到不同的文件,例如“xlocale”或“output.c”。
我认为这两件事是相互关联的,如果我能解决它们,我就能让它们都工作。
这是代码: https : //www.dropbox.com/s/j56kb41q3bmmnby/Program_SDL2_IO_Error.zip?dl=0
只要看看代码,请告诉我我做错了什么。
为了重现我所说的错误,请使用这些文件创建一个 Visual Studio SDL2 项目并对其进行调试以了解我的意思。
请帮忙。
谢谢你。
CReadWriter
类的函数中,您将参数作为值传递,因此不会更改CPlayer::CPlayer
中CPlayer::CPlayer
和 curY 的值(它们保持为 0)。CPlayer::~CPlayer
(析构函数)中,您将Image_Surface
设置为NULL
,然后尝试使用导致内存错误的SDL_FreeSurface
将其SDL_FreeSurface
。解决方案:
您的读取方法必须类似于:
void ReadX(int* X); // pass a pointer to the variable, in which you want to store the read value
void ReadX(int& X); // pass a reference to the variable ....
NULL
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.