写入位置0x00460000时发生访问冲突,这是啥原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写入位置0x00460000时发生访问冲突,这是啥原因?相关的知识,希望对你有一定的参考价值。

参考技术A

1. charname[10];

2. printf("        请填写下列内容        \\n\\n");

3. printf(" 您的姓名 :   \\n");

4. scanf_s("%s",name,10);

5. printf("\\n\\n  您好,%s。欢迎使用本软件!   \\n",name);

6. system("pause");

7. return0;

--------------------------------------------------------------------------------------------

第4行&name改为name,并且注意scanf_s的用法第三个参数

http://baike.baidu.com/link?url=nfT3vQv_4sODLEq3vWseNxuflSLWL4P25qNW4ElY5tczPe3zGTY6nuyHSW9z9dX_JF1cWoGOSAGWR3geChWyLq

-----------------------------------------

第5行"您好,%s。"中与%s对应的是name

-----------------------------------------

第6行可以让你的程序暂停

0xC0000005: 写入位置 0x0000000002450040 时发生访问冲突

遇到这样的报错,没有其他提示,跳入汇编代码,瞬间傻了

可以查看调试中的代码图,查看调用的顺序,定位问题位置

如果代码图看见的全是地址,说明访问的地方已经销毁,具体在哪里,可以借助中断时候的线程窗口

黄箭头指向 当前运行到那个线程,对比你的线程ID,大概能确定在那个线程,然后在分析

LOG_INFO << "rtsp listen start!!! RtspPro() thread id is " << boost::this_thread::get_id();

 

 

一般说来是如下问题

1.空指针赋值

2.数组或者指针越界

3.指针没有初始化

4.访问已经析构的类的成员变量(尤其是线程里面访问)

 

以上是关于写入位置0x00460000时发生访问冲突,这是啥原因?的主要内容,如果未能解决你的问题,请参考以下文章

C语言:0xC0000005: 写入位置 0x00000000 时发生访问冲突。

0xC0000005: 写入位置 0x00000000 时发生访问冲突的解决办法(转)

memcpy():访问冲突写入位置

处有未经处理的异常:0xC0000005:写入位置0x00EFA000时发生访问冲突.

(ntdll.dll)处引发的异常: 0xC0000005: 写入位置 0x00007FF6010E2278 时发生访问冲突 怎么办?

0x0F19B7EC (ucrtbased.dll)处(位于 ex6.exe 中)引发的异常: 0xC0000005: 写入位置 0x00740000 时发生访问冲突。