0

我正在尝试访问未初始化的内存,

int *ptr;

// to this and that

*ptr = 8;
return 0;

我得到以下异常,

sam2.exe 中 0x0041145e 处的未处理异常:0xC0000005:访问冲突写入位置 0xcccccccc。

现在我知道0xccccccccVisual C++ 中用于未初始化指针的值。但我不明白0x0041145e和的意思0xC0000005的含义。

澄清一下,我问这个问题是因为我想在 YouTube 上制作有关幻数的视频教程的视频教程。

我感谢您的帮助。谢谢。

4

2 回答 2

3

0xC0000005是访问冲突错误代码。这种带有指针的非法操作会导致访问冲突,因此将看到此代码。另一方面0x0041145e,它不是一个幻数,它是可执行文件中违规指令的位置,并且对于执行相同操作的其他程序会有所不同。

于 2013-07-30T12:39:16.053 回答
0

这是使用指针的错误方式。诠释*ptr;上面这行告诉你 ptr 持有一个指向指针的地址。默认情况下,存储的地址是一些垃圾,具体取决于编译器,根据您收到的错误,可以安全地假设地址为 0xcccccccc

0x0041145e,是正在执行的指令的地址,或者这是堆栈顶部的指令。

所以你的代码没有执行。请像这样修改代码。
int *ptr = (int *)malloc(sizeof(int));
*ptr = 8;
返回0;

于 2013-07-30T12:42:49.737 回答