我目前正在尝试学习 C++,但我在使用以下代码时遇到了问题。
class Vector2
{
public:
double X;
double Y;
Vector2(double X, double Y)
{
this->X = X;
this->Y = Y;
};
SDL_Rect * getSdlOffset()
{
SDL_Rect * offset = new SDL_Rect();
offset->x = this->X;
offset->y = this->Y;
return offset;
};
};
Visual studio throws在调用getSdlOffset()时抛出如下错误
An unhandled exception of type 'System.AccessViolationException' occurred in crossEchoTest.exe
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
我有 C#/java 背景,但我迷路了......非常感谢任何帮助。
最佳答案
您从未初始化 X 或 Y...您认为这些值可能是什么?它们很可能指向 00000X00(我很生疏,这可能不是正确的地址,但您指向的是程序分配空间之外的内存...因此我将 C/C++“转换”为 Java 的“GPF” (超过 11 年前)所以我可以欣赏你对指针如何表现的想法——我可以向你保证,指针是 C/C++ 中最难理解的部分,所以你在学习的道路上是正确的。只是请记住,与 Java/C# 不同,C/C++ 不会让您免于伤害自己或其他程序的 OS 内存空间/内存空间。我一直记得在我学习 C 时一位老师曾经告诉我的话——“With C你有凯夫拉尔 Boot 和枪,在用脚射击自己之前是否穿上 Boot 取决于你,因为你会用自己的脚射击自己一些点...”祝你学习 C++ 好运,坚持下去,不要气馁。
西马
关于c++ - 读/写保护内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481886/