c++ - 读/写保护内存?

标签 c++ memory sdl

我目前正在尝试学习 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/

相关文章:

opengl - 在OpenGL中使用SDL_ttf

c++ - 是否有用于检测 USB 过流的 Windows API?

c++ - 关于C++中的动态数组构造

c++ - 为什么在 C++ 中使用 <cstdio> 而不是 <stdio.h> 时 "std::printf"和 "printf"都会编译?

c++ - 质因数分解的除数

c++ - 将字节从较小的类型复制到较大的类型

c++ - SDL2 渲染到纹理

c++ - SDL/C++(加速)黑屏

java - 设置 BufferedImage 的单个像素会在另一个 BufferedImage 中设置相同的像素。为什么?

php - PHP 实际使用了多少内存?