访问冲突读取位置0xcdcdcdd5
Access violation reading location 0xcdcdcdd5
请看下面的代码。
GameComponent.h
#pragma once
#include<time.h>
#include "Position.h"
class GameComponent
{
public:
GameComponent(int);
GameComponent();
~GameComponent(void);
virtual void update(const tm*);
void addPosition(Position *p);
friend class Position;
private:
int id;
Position *position;
};
GameComponent.cpp
#include "GameComponent.h"
#include <iostream>
#include <time.h>
#include "DrawableGameComponent.h"
#include "Position.h"
using namespace std;
GameComponent::GameComponent(int v):id(v)
{
}
GameComponent::GameComponent(){}
GameComponent::~GameComponent(void)
{
}
void GameComponent::update(const tm* time)
{
cout << "ID : " << id << endl;
cout << "Update: " << time->tm_hour << ":" << time->tm_min << ":" << time->tm_sec << endl;
position->display();
//Position::displayPositions();
}
void GameComponent::addPosition(Position *p)
{
position = p;
p->display();
cout << "position working" << endl;
}
Position.h
#pragma once
class Position
{
friend class GameComponent;
public:
Position(int x, int y, int z);
Position();
~Position();
void display();
private:
int x;
int y;
int z;
};
Position.cpp
#include "Position.h"
#include <iostream>
using namespace std;
Position::Position(int x, int y, int z)
{
this->x = x;
this->y = y;
this->z = z;
}
Position::Position(){}
Position::~Position(void)
{
}
void Position::display()
{
//cout << "Display Working" << endl;
cout <<"Position " << " X: " << x << " Y: " << y << " Z: " << z << endl;
}
首先,这不是完整的代码,这是发生错误的部分代码。当我运行代码时,我得到错误
Unhandled exception at 0x00302d90 in GameEngine.exe: 0xC0000005: Access violation reading location 0xcdcdcdd5.
指向输出区域(cout <<"X"& lt; & lt;........)的position
的display()
方法(Visual Studio显示一个黄色数组指向该位置)。
我在谷歌上搜索了这个问题,发现这是因为空指针,它指向没有地方。GameComponent
的addPosition()
方法中有一个指针赋值(将指针参数赋给另一个指针)。
我相信错误来自那里。请帮我去掉这个错误
下面是我可以添加position ()
的位置Test.cpp
元件套用* *组件;
void Test::add(GameComponent *gameComponent, Position *p)
{
component[componentCount] = gameComponent;
component[componentCount]->addPosition(p);
componentCount++;
}
0xCDCDCDCD
是MSVC在分配的内存周围放置的一个特殊值,用于在访问无效内存时提醒您(和调试运行时)。
因为你的地址是0x08高,我怀疑你添加到一个指针或数组,并试图解引用它。这可能是一个偏离1的错误,试图获取超过数组末尾的项,或者它可能是一个在释放后正在使用的对象。
我在谷歌上搜索了这个问题,发现这是因为空指针,它指向没有地方。在GameComponent的addPosition()方法中有一个指针赋值(将指针参数赋给另一个指针)。
检查,以确保该指针是有效的,不是0xCDCDCDCD
或指向内存填充(或其他保护)值。如果编译器填充Position
或插入虚函数表引用,则在解引用0xCDCDCDCD
时,给出的段错误地址与X
匹配。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 如何在特定位置追加 json 文件
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 访问冲突读取位置0xcdcdcdd5