memory-corruption相关内容

glibc检测到malloc():C中的内存损坏

我正在尝试在Linux下用C编写代码并得到此错误消息: glibc检测到malloc():内存损坏 我不知道为什么... substring()只是通过提供起始索引和长度来返回原始字符串的一部分.例如substring("this is example",0,4)="this"; char * substring(char * str,int start,int length ..
发布时间:2021-05-11 18:56:54 其他开发

TXMLDocument.Active:= False导致FastMM4错误消息"FastMM在释放后检测到块已被修改".

在FullDebugMode中使用带有FastMM4(版本4.92)的Delphi XE8会产生奇怪的效果. 要重现效果,只需创建一个新的TForm应用程序,将FastMM4放在DPR文件的第一行, 在表单上放置一个按钮,然后在clickhandler中放置以下代码: (您需要安装FastMM 4,必须在FastMM4Options.inc文件中启用FullDebugMode,并且 F ..
发布时间:2020-06-30 20:14:39 其他开发

使用Visual Studio调试C ++程序中的缓冲区溢出的工具吗?

很久以前,当我在Windows上进行C ++工作时,有一个用于调试缓冲区溢出的高级诊断工具.它使用特殊的字符模式初始化所有分配的存储区(堆栈或堆),以便可以检测缓冲区溢出.它将自身注入到内存管理器中,以执行此操作,因此它可以在内存写入后检查所有内存区域以查找损坏.在穷举模式下,它将在每次内存写入后执行此操作,而不仅限于特定区域. 这当然使您的程序运行缓慢,但它是查找损坏的内存区域的救星. V ..

为什么此代码会破坏内存?

这是一个相当新手的问题,应该很快就可以回答... 基本上,在 echo 中第一次调用 Printf 后, args 的内容已损坏.在我看来,我是错误地传递了指针.但是不知道为什么吗? #define MAX_PRINT_OUTPUT 4096 void Echo(char *args[MAX_COMMAND_ARGUMENTS], int argCount) { for (i ..
发布时间:2020-06-30 20:14:34 C/C++开发

Valgrind或Electric Fence无法检测到堆损坏.我应该怀疑吗? (C ++)

我最近遇到了我的第一个战斗 (已解决),其中有堆损坏.在我家里的linux机器上,使用valgrind和电子围栏(带有gdb),罪魁祸首代码无错误退出.但是,在我们实验室的Windows计算机上,我始终从我引用的文章中描述的VS中获得与堆破坏相关的错误消息. Valgrind和电子围栏无法检测到这样的问题是否令人惊讶(至少不常见)?有人在答案此处中提到了可能遗漏valgrind的错误. .这 ..

将字符串数组从C#传递到C ++ DLL函数并将其填充到DLL中并返回

我正在编写一个C#应用程序,该程序将大小为30的空字符串数组传递给C ++ DLL.该字符串数组需要填充到DLL中,并返回给C#应用程序. 我的代码在DLL的函数调用结束时观察到内存损坏. 我的C ++ DLL代码如下: SAMPLEDLL_API BOOL InitExecution (wchar_t **paszStrings, int count) { for (i ..
发布时间:2020-05-27 21:40:18 C#/.NET

GDB调试跟踪没有相关信息(#()中的#0 0x2e6e6f69)

在使用GDB进行调试时,我面临着特定的挑战。我的二进制文件生成核心。当我调试它的GDB。我没有得到相关的调试信息。 GDB堆栈跟踪(bt): - [root (g)红帽企业Linux(7.0.1-23.el5) 自由软件基金会版权所有(c)2009 许可证GPLv3 +:GNU GPL版本3或更高版本 这是 ..

glibc堆一致性检查

根据2008年的帖子(我现在找不到它), glibc堆检查在多线程环境中不起作用。现在是2010年的情况吗? 默认启用堆检查吗? (gcc 4.1.2)?我没有设置MALLOC_CHECK_,不知道调用mcheck(),但仍然有时会用backtrace获得双免费的glibc错误。也许它是由一些编译标志启用的? 解决方案默认情况下,不使用malloc_check_或mcheck ),glib ..
发布时间:2018-04-21 10:43:53 其他开发

FastMM4说“块头已被损坏”

我有这个讨厌的错误在过去消失了,但现在经过一段时间后才返回。 我有两个TSam对象(派生自TPersistent)创建和加载转换成TAsmJob对象(派生自TObjectList)。 在运行时,表单创建一个TStringGrid,然后创建AsmJob,创建这两个SAM对象(并从磁盘加载一些数据在他们每个)。 AsmJob也被分配到网格。 当表单被销毁时,Grid通过释放它来处理Asm ..
发布时间:2017-04-24 21:47:18 Delphi

奋斗 - 另一个内存损坏问题,坏的分配(C ++,VS 2008)

我已经阅读了很多关于内存损坏的帖子,似乎可以解决这个相当困难的问题。当我在我的linux机器上运行我的代码,它执行正常,valgrind不报告任何泄漏或错误。然而,当我用VS2008在我的实验室的Windows机器上运行代码时,我得到一个坏的分配错误,停止与_RAISE(nomem)。这对我来说似乎很奇怪,因为我希望valgrind能够抓住它。 void * __ CRTDECL oper ..
发布时间:2017-04-22 00:34:49 开发方法

调试令人讨厌的SIGILL崩溃:文本段腐败

我们是一个基于PowerPC的运行Linux的嵌入式系统。我们正在遇到一个随机的SIGILL崩溃,这是广泛的应用程序。崩溃的根本原因是将要执行的指令清零。这表示驻留在存储器中的文本段的损坏。当文本段以只读方式加载时,应用程序不能破坏它。所以我怀疑一些共同的子系统(DMA?)导致这种腐败。由于问题需要几天再现(由于SIGILL崩溃),它变得很难调查。所以开始我想知道是否和什么时候任何应用程序的文本段 ..
发布时间:2016-10-27 00:59:48 服务器开发

boost :: spirit :: hold_any内存损坏

我有一个大型代码库,可以使用 boost ::任何或 boost :: spirit :: hold_any (取决于宏定义)。 hold_any boost :: any (例如如何将boost :: any打印到流? 或类型擦除 - 第IV部分 )和更快(为什么你不应该使用boost :: any ),但我遇到了几个分段错误使用 hold_any (Boost v1.55 / 1.54 ..
发布时间:2016-10-23 21:07:31 C/C++开发

boost :: spirit :: hold_any内存损坏

我有一个大型代码库,可以使用 boost ::任何或 boost :: spirit :: hold_any (取决于宏定义)。 hold_any boost :: any (例如如何将boost :: any打印到流? 或类型擦除 - 第IV部分 )和更快(为什么你不应该使用boost :: any ),但我遇到了几个分段错误使用 hold_any (Boost v1.55 / 1.54 ..
发布时间:2016-10-23 21:03:31 C/C++开发

C ++ -malign-double编译器标志

我需要一些关于c ++编译器标志的帮助。我使用的库是一个端口到Linux的linux,必须使用-malign-double标志,“为Win32兼容性”编译。这是我的理解,这意味着我绝对必须编译自己的代码与这个标志吗?如何其他.so共享库,他们已经重新编译与此标志吗?如果是这样,有什么办法吗? 我是一个linux新手(和c ++),所以即使我试图重新编译我使用的所有库对于我的项目,只是太复杂, ..
发布时间:2016-10-20 21:46:55 C/C++开发

捕获EngineExecutionException

我有一个包含托管和本机代码的应用程序。该应用目前有未处理的异常过滤器,通过SetUnhandledExceptionFilter设定,其中捕捉任何严重错误,生成一个小型转储,记录各种应用程序参数,并退出程序。 未处理异常处理程序没有捕获发生在.NET运行时EngineExecutionException。我们怀疑问题是由应用程序的本地部分内存损坏。 现在的问题是,当异常发生时,应用程序 ..
发布时间:2016-09-28 12:50:56 C#/.NET

有硬实时跟踪内存损坏 - 用Valgrind的运行时,没有任何错误运行正常

我们有一个复杂的程序,是在重型输入(实际上任何输入),没有实现多线程运作良好。结果 我们已经实现了多线程与线程池,并给予这些输入参数,我得到这些结果:结果 (注意:如果我说的的没有任何错误的,这意味着我已经与的valgrind -v 当我说的没有内存泄漏的,这意味着我已经与的valgrind --leak检查=全-v )。 small_file: 1个多工(线程),没有错误Valgrin ..
发布时间:2016-08-18 14:56:26 C/C++