在分配的内存外写入时中断
break when writing outside allocated memory
使用c++,我有一个变量意外地发生了变化,这可能是因为我在分配的内存之外写东西。我所看到的解决方案是跟随变量并找到它不应该改变的罕见位置,但这是一个非常缓慢的解决方案。是否有任何方法来配置Visual studio调试模式打破写外部分配的内存?
您可以使用Data breakpoint
来捕捉变量变化的时刻。可以使用Visual Studio中的DebugNew breakpointNew data breakpoint
菜单设置数据断点。
Edit:要检测内存范围违规,您可以使用一些分析工具(例如Bounds Checker),但这是您必须购买的独立产品。还可以编写自己的内存管理器来检测内存范围违规。详情请参见this, this和this。
当在Windows分配的内存外写时,通常会得到访问冲突(0xC0000005)。但是意外覆盖的变量肯定是在已分配内存中。
相关文章:
- 将数组的地址分配给变量并删除
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 将地址分配给本地指针后,公共对象的变量将消失
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- 正在尝试重载二进制搜索树分配运算符
- GlobalAlloc而不是其他分配方法
- 自定义先决条件对移动分配运算符有效吗
- 当分配动态内存以存储字符串副本时,程序会中断
- 尝试分配值时C++继承中断的代码
- 尝试分配值时C++代码中断
- 当使用Ctrl-C中断程序时,如何释放动态分配的空间
- 在分配的内存外写入时中断