如何在删除期间摆脱伪造的_BLOCK_TYPE_IS_VALID断言失败
How to get rid of bogus _BLOCK_TYPE_IS_VALID assertion failure during delete?
当我在调试模式下构建visual c++项目时,只需要两行代码
TEnviron * fk = new TEnviron();
delete fk;
从_CrtIsValidHeapPointer抛出断言失败错误_BLOCK_TYPE_IS_VALID。它的注释是
Verify pointer is not only a valid pointer but also that it is from the 'local' heap.
TEnviron来自与我的主程序不同的dll,所以它失败了。我迫切需要在我的软件中识别"真正的"内存损坏,所以我开始使用调试构建,希望它可以捕获损坏,但它只是制造虚假的噪音,并且不会让我继续超出该声明。一个人不能写一个删除语句吗?在我被炒之前请帮帮我。
如果我们谈论MSVC,我个人只在该DLL中创建和删除从DLL导入的类的对象。所以它们总是存在于DLL的堆中,而不是主堆中。我使用一对静态函数create/destroy来实现它。这样我就可以安全地在任何地方创建和删除对象。也许这对你来说不是最好的解决方案,但它解决了你的问题。
相关文章:
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 在 QVector<std::unique_ptr 上使用 std::find<Type>>
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- 控制到达非空函数clang(-Wreturn-type)的末尾
- std::unordered_map 类型对象声明期间出现"field has incomplete type"错误
- 将系数存储在头文件的数组中("does not name a type"错误)
- 尝试打开 ifstream 时出现"Incomplete type"错误
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- 在"结构提升::enable_if<提升::is_pod<T>,无效>"中没有名为"type"的类型
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- OpenCV CV_16F type
- C++ "错误:在'类 std::result_of< ... >"中没有名为'type'的类型"
- 将内存分配返回值强制转换为 TYPE 数组
- C++ 一个lambda浅拷贝const Type&如果它被赋予一个命名捕获,如[copy=val](){}?
- reference_wrapper导致"incomplete type is not allowed"
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 由于"error C4430: missing type specifier - int assumed. Note: C++ does not support default-int",我现在无法编
- 如何解决"'mutex' in namespace 'std' does not name a type"?
- 结构中的错误"Incomplete type is not allowed"