- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
昨天关门了。
这篇文章是20小时前编辑并提交审查的。
Improve this question
我在这里提出这个问题是因为我遇到了内存级别的问题,而不是编码级别的问题,当前我运行了以下代码
void* Newnumber;
int* ptr;
Newnumber = &dbCircle;
ptr = reinterpret_cast<int*>(Newnumber);
*ptr = 1; //memory error here why?
dbCircle(x, y, RADIUS); //Void function(int, int, int);
这段代码在int main()中运行,可以很好地编译,但会产生以下错误:
program. exe出现未处理的异常:0xC0000005:写入位置0x004e9e20时发生访问冲突
为什么?基本上,如果你返回1点到函数dbCircle并从那里开始,这应该像我试图说的那样工作
我所期望的是,如果返回1来使用引用指向void dbCircle函数,但是由于某种原因,即使代码构建良好,我也会遇到复杂的内存错误。
1条答案
按热度按时间dtcbnfnu1#
"我想说的是,如果您向函数dbCircle返回1个点,然后从那里开始"
你的意图不完全清楚。
但是你的代码绝对没有做类似的事情。
此行:
将
Newnumber
赋给函数dbCircle
的地址,即函数代码所在的地址。此行:
将
ptr
赋给同一地址,解释为它包含有效的int
(实际上不包含)。现在这一行:
它试图将
1
写入ptr
中存储的地址,即dbCircle
的**代码地址。由于这是非法的,因此您会得到一个访问冲突运行时错误。