【发布时间】:2012-10-28 00:26:19
【问题描述】:
我在 DirectX11 中制作乒乓球,但遇到了一些奇怪的错误。
我在 Pong 类中声明了一个指针:
XMVECTOR *ballDirection;
而且由于某种原因,每当我尝试访问它时:
Unhandled exception at 0x002127d8 in DirectX11Pong.exe:
0xC0000005: Access violation reading location 0x00000000.
我很确定当您尝试访问 nullptr 指针时会发生这种情况,但是,
在对指针进行任何“访问”之前,我已经对其进行了初始化:
ballDirection = new XMVECTOR();
例如,我现在遇到此错误的代码行如下:
*ballDirection = XMVectorSetX(*ballDirection, 1);
我认为唯一相关的其他信息是我之前尝试将保存桨信息的单个指针转换为指针数组(用于多个玩家):
(之前)
Sprite *paddle;
(之后)
Sprite *paddle[2];
在我这样做的那一刻,我在访问ballDirection 时遇到了这个错误,
即使在我创建这个数组之前它工作得很好,而且我在创建数组和修改适当的代码时没有更改任何与 ballDirection 相关的代码。
在我注意到收到此错误后,我将代码改回来,但仍然发生。
我该如何解决这个问题?
【问题讨论】:
-
是否完全违背了一些不言而喻的信条,您必须在裸声明中将指针初始化为 NULL?
Sprite *paddle = NULL;。请养成这个习惯。 -
如果可以的话请做一个测试用例!这里不足以知道你做错了什么。
-
"在我注意到收到此错误后,我将代码改回,但仍然发生这种情况。"您是否完全重建了您的项目?
-
rebuild 没有用 :(,还有关于将指针设置为 NULL 的讽刺言论,对不起,我是一个 14 岁的孩子,在互联网上随机学习 c++ 3 个月. 不要讨厌!
标签: c++ windows memory-management