memory-corruption相关内容
我真的不明白这个错误是如何在这段代码中发生的.请自行检查代码 void dispatcherTimer_Tick(object sender, EventArgs e){string srUrl = lstLocalIndex[irLocalIndex] + lstMainIndex[irMainIndex].Replace("0;","");Task.Factory.StartNew(()
..
我正在尝试在Linux下用C编写代码并得到此错误消息: glibc检测到malloc():内存损坏 我不知道为什么... substring()只是通过提供起始索引和长度来返回原始字符串的一部分.例如substring("this is example",0,4)="this"; char * substring(char * str,int start,int length
..
我刚刚试用了GCC 4.8的令人兴奋的新功能AddressSanitizer. 程序 #include int main(int argc, const char * argv[], const char * envp[]) { int *x = nullptr; int y = *x; std::cout
..
我有以下程序test.cc: #include unsigned char bogus1[] = { // Changing # of periods (0x2e) changes output after periods. 0x2e, 0x2e, 0x2e, 0x2e }; unsigned int bogus2 = 1816; // Changing thi
..
在FullDebugMode中使用带有FastMM4(版本4.92)的Delphi XE8会产生奇怪的效果. 要重现效果,只需创建一个新的TForm应用程序,将FastMM4放在DPR文件的第一行, 在表单上放置一个按钮,然后在clickhandler中放置以下代码: (您需要安装FastMM 4,必须在FastMM4Options.inc文件中启用FullDebugMode,并且 F
..
很久以前,当我在Windows上进行C ++工作时,有一个用于调试缓冲区溢出的高级诊断工具.它使用特殊的字符模式初始化所有分配的存储区(堆栈或堆),以便可以检测缓冲区溢出.它将自身注入到内存管理器中,以执行此操作,因此它可以在内存写入后检查所有内存区域以查找损坏.在穷举模式下,它将在每次内存写入后执行此操作,而不仅限于特定区域. 这当然使您的程序运行缓慢,但它是查找损坏的内存区域的救星. V
..
这是一个相当新手的问题,应该很快就可以回答... 基本上,在 echo 中第一次调用 Printf 后, args 的内容已损坏.在我看来,我是错误地传递了指针.但是不知道为什么吗? #define MAX_PRINT_OUTPUT 4096 void Echo(char *args[MAX_COMMAND_ARGUMENTS], int argCount) { for (i
..
我最近遇到了我的第一个战斗 (已解决),其中有堆损坏.在我家里的linux机器上,使用valgrind和电子围栏(带有gdb),罪魁祸首代码无错误退出.但是,在我们实验室的Windows计算机上,我始终从我引用的文章中描述的VS中获得与堆破坏相关的错误消息. Valgrind和电子围栏无法检测到这样的问题是否令人惊讶(至少不常见)?有人在答案此处中提到了可能遗漏valgrind的错误. .这
..
我正在编写一个C#应用程序,该程序将大小为30的空字符串数组传递给C ++ DLL.该字符串数组需要填充到DLL中,并返回给C#应用程序. 我的代码在DLL的函数调用结束时观察到内存损坏. 我的C ++ DLL代码如下: SAMPLEDLL_API BOOL InitExecution (wchar_t **paszStrings, int count) { for (i
..
在使用GDB进行调试时,我面临着特定的挑战。我的二进制文件生成核心。当我调试它的GDB。我没有得到相关的调试信息。 GDB堆栈跟踪(bt): - [root (g)红帽企业Linux(7.0.1-23.el5) 自由软件基金会版权所有(c)2009 许可证GPLv3 +:GNU GPL版本3或更高版本 这是
..
根据2008年的帖子(我现在找不到它), glibc堆检查在多线程环境中不起作用。现在是2010年的情况吗? 默认启用堆检查吗? (gcc 4.1.2)?我没有设置MALLOC_CHECK_,不知道调用mcheck(),但仍然有时会用backtrace获得双免费的glibc错误。也许它是由一些编译标志启用的? 解决方案默认情况下,不使用malloc_check_或mcheck ),glib
..
我有这个讨厌的错误在过去消失了,但现在经过一段时间后才返回。 我有两个TSam对象(派生自TPersistent)创建和加载转换成TAsmJob对象(派生自TObjectList)。 在运行时,表单创建一个TStringGrid,然后创建AsmJob,创建这两个SAM对象(并从磁盘加载一些数据在他们每个)。 AsmJob也被分配到网格。 当表单被销毁时,Grid通过释放它来处理Asm
..
我已经阅读了很多关于内存损坏的帖子,似乎可以解决这个相当困难的问题。当我在我的linux机器上运行我的代码,它执行正常,valgrind不报告任何泄漏或错误。然而,当我用VS2008在我的实验室的Windows机器上运行代码时,我得到一个坏的分配错误,停止与_RAISE(nomem)。这对我来说似乎很奇怪,因为我希望valgrind能够抓住它。 void * __ CRTDECL oper
..
我们是一个基于PowerPC的运行Linux的嵌入式系统。我们正在遇到一个随机的SIGILL崩溃,这是广泛的应用程序。崩溃的根本原因是将要执行的指令清零。这表示驻留在存储器中的文本段的损坏。当文本段以只读方式加载时,应用程序不能破坏它。所以我怀疑一些共同的子系统(DMA?)导致这种腐败。由于问题需要几天再现(由于SIGILL崩溃),它变得很难调查。所以开始我想知道是否和什么时候任何应用程序的文本段
..
我使用valgrind与 - leak- check = full ,使用 -O0 -g 编译,第一个问题是 int main() cout 0x7feb7de10 == 5089 ==禁止,使用:--max-stackframe = 47
..
我有一个大型代码库,可以使用 boost ::任何或 boost :: spirit :: hold_any (取决于宏定义)。 hold_any boost :: any (例如如何将boost :: any打印到流? 或类型擦除 - 第IV部分 )和更快(为什么你不应该使用boost :: any ),但我遇到了几个分段错误使用 hold_any (Boost v1.55 / 1.54
..
我有一个大型代码库,可以使用 boost ::任何或 boost :: spirit :: hold_any (取决于宏定义)。 hold_any boost :: any (例如如何将boost :: any打印到流? 或类型擦除 - 第IV部分 )和更快(为什么你不应该使用boost :: any ),但我遇到了几个分段错误使用 hold_any (Boost v1.55 / 1.54
..
我需要一些关于c ++编译器标志的帮助。我使用的库是一个端口到Linux的linux,必须使用-malign-double标志,“为Win32兼容性”编译。这是我的理解,这意味着我绝对必须编译自己的代码与这个标志吗?如何其他.so共享库,他们已经重新编译与此标志吗?如果是这样,有什么办法吗? 我是一个linux新手(和c ++),所以即使我试图重新编译我使用的所有库对于我的项目,只是太复杂,
..
我有一个包含托管和本机代码的应用程序。该应用目前有未处理的异常过滤器,通过SetUnhandledExceptionFilter设定,其中捕捉任何严重错误,生成一个小型转储,记录各种应用程序参数,并退出程序。 未处理异常处理程序没有捕获发生在.NET运行时EngineExecutionException。我们怀疑问题是由应用程序的本地部分内存损坏。 现在的问题是,当异常发生时,应用程序
..
我们有一个复杂的程序,是在重型输入(实际上任何输入),没有实现多线程运作良好。结果 我们已经实现了多线程与线程池,并给予这些输入参数,我得到这些结果:结果 (注意:如果我说的的没有任何错误的,这意味着我已经与的valgrind -v 当我说的没有内存泄漏的,这意味着我已经与的valgrind --leak检查=全-v )。 small_file: 1个多工(线程),没有错误Valgrin
..