"error C4996"和"读取位置 0x00000008 时发生访问冲突"的问题整理

1.

在使用Visual Stdio 2013时,编译出现以下错误:
error C4996: 'std::basic_string,std::allocator>::copy': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS.
 See documentation on how to use Visual C++ 'Checked Iterators'

解决办法:
     右键项目-->属性--> 【通用配置】/【c/c++】/ 【预处理器】中第一行 【预处理器定义】中右边点击编译 ,在最下方加入_SCL_SECURE_NO_WARNINGS 确定即可;
注意:  添加的是_SCL_SECURE_NO_WARNINGS 去掉提示错误-D_SCL_SECURE_NO_WARNINGS前面的-D ;

2.

0x012EE049 处的第一机会异常(在 XXX.exe 中):  0xC0000005:  读取位置 0x00000008 时发生访问冲突

调试方法:崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

可能原因:1、内存访问出错。

                   2、0x00000008 这种接近零值的地址,一般是由于你操作NULL指针造成的,自己单步一下看出错在哪句,然后检查下指针单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

                   3、一般都是访问的位置的值为不正常的值 。

                   4、路径错误。


 

你可能感兴趣的:("error C4996"和"读取位置 0x00000008 时发生访问冲突"的问题整理)