草庐IT

c++ - 反序列化中的文件损坏,如何防止崩溃?

我正在使用boost图形库来处理图形。我使用boost::serialization将我的图形写入文件。出于测试目的,我修改了文件的完整性。现在我的程序总是崩溃。我想知道有什么方法可以防止崩溃(boost::serialization不会抛出异常)。更一般地说,对于任何类型的文件,在解析时都不会抛出异常,所有的文件都应该是正确的,是否也有办法?也许唯一的解决方案是编写带有异常处理的自定义序列化/反序列化函数?谢谢!编辑:当所有数据损坏或文件丢失时,会出现boost::archive::archive_exception。但是如果只更改文件的某些部分,它会崩溃......Edit2:我应

C++动态整数数组有时会导致崩溃

我写了一个简单的代码如下:voidshow(constinta[],unsignedelements);intmain(){show(newint[]{1,2,3,45},4);//doesnotwork}voidshow(constinta[],unsignedelements){cout它应该只输出{1,2,3,45}。如果我在括号中包含一个尺寸show(newint[4]{1,2,3,45},4);然后就可以了。所以很自然地我会假设如果我以这种方式编写new我必须指定大小(尽管我认为给它一个初始化列表会暗示大小)。但是,奇怪的是,当在show函数调用处设置断点并通过调试器逐步运行

c++ - AVX:数据对齐:store crash,storeu,load,loadu 没有

我正在修改RNNLM一个神经网络来研究语言模型。但是考虑到我的语料库的大小,它运行得非常慢。我试图优化矩阵*vector例程(这是一个占小数据集总时间63%的例程(我预计它在大数据集上会更糟))。现在我坚持使用内在函数。for(b=0;b此示例崩溃于:_mm256_store_ps(&(dest.ac[b*8+from+0]),t4);但是如果我改成_mm256_storeu_ps(&(dest.ac[b*8+from+0]),t4);(我想你是未对齐的)一切都按预期进行。我的问题是:为什么load可以工作(而如果数据未对齐,它不应该工作)而store却不能。(此外,两者都在同一个地址

c++ - 替换或修改外部应用程序中的 API 调用(GetOpenFileName、GetSaveFileName)

我有一个调用GetOpenFileNameA和GetSaveFileNameA的旧应用程序。两次调用都是错误的。应用程序崩溃!我已经使用OllyDbg和APIMonitor来读取存储在OPENFILENAME结构中的大小。该结构的大小为76字节(使用Windows7x64进行测试)。调用GetOpenFileNameA或GetSaveFileNameA时出现访问冲突异常。我假设在运行时窗口试图读取88字节而不是76字节。看看这个:http://dotnetbutchering.blogspot.de/2007/10/vc-60-getting-0xc0000005-access.htm

c++ - 隔离容易崩溃的 (SEGV) 但将关键的遗留代码加速到单独的二进制文件中

我有一个经过良好测试且没有崩溃的代码库(主要是C++)。大多。代码的一部分——不可替代、难以维护或改进并链接到一个二进制库*——导致所有崩溃。这些不会经常发生,但一旦发生,整个程序就会崩溃。+----------------------+|Shinynewsane||codebase||||+-----------------+|Ifthelegacycodecrashes,||||theentireprogramdoes,too.||LegacyCode||||*Crashprone*||||intabc(data)|||+-----------------+|||+--------

c++ - 崩溃转储的最佳标志

我目前有一些代码会在我的应用程序崩溃时生成故障转储,但是我无法弄清楚哪些是最好的标志。目前我使用全内存(MiniDumpWithFullMemory),但这会产生32mg的崩溃文件。我应该使用哪些标志,既不会使崩溃文件变大,又能在使用它进行调试时提供最大的功能?有关标志的更多信息,请访问:http://www.debuginfo.com/articles/effminidumps.html 最佳答案 这并不总是如此笼统的答案。所需的标志在某种程度上取决于您要完成的任务或您可能要搜索的内容。也许您有线程问题,MiniDumpWithT

c++ - 当我什至无法进入代码时如何调试 "This application has requested the Runtime to terminate it in an unusual way."?

我有一个C++程序,它在进程启动后立即给出此错误-显然是在任何用户代码执行之前。它仅在启用内联时发生。即使内置了调试符号,我也无法进入代码。当我在VisualStudio中按下F10时,我收到了错误并且程序停止了。我在“调试/异常”中检查了所有异常/检查,但仍然没有休息。通常我会认为这样的事情是由于缺少运行时依赖项造成的,但我很肯定这不是这里的情况(已通过DependencyWalker验证)。编辑:我使用了SteveTownsend对CDB的推荐,现在我能够单步执行程序的预用户代码部分。最终的堆栈跟踪是:Child-SPRetAddrCallSite00000000`0008e308

c++ - 找出调用 __fastfail 的原因

我有一个我不熟悉的巨大代码库,程序异常终止,因为某个地方的线程正在调用__fastfail。这是基于以结尾的消息...Fatalprogramexitrequested.调用堆栈没有符号,因为它位于C++2015运行时(ucrtbase.dll)中。该调用似乎是在我的主线程以外的线程上进行的。这个神秘的线程只在问题发生之前启动,所以我无法在调试器中捕捉到它启动的行为-我不知道是什么启动了它,也不知道是什么导致了整个过程。我在我的main()中使用__try/__catch有SEH,所以任何未处理的异常都应该被困在那里。相反,我猜测某些地方会冒泡到运行时并导致__fastfail。我试过

c++ - SSE 与类(class)保持一致

有一些非常奇怪的问题,作为c++的初学者,我不知道为什么。structDeviceSettings{public:....somevariablesDXSizeBackbufferSize;....somemethods};structDXPoint;typedefDXPointDXSize;__declspec(align(16))structDXPoint{public:union{struct{intx;inty;};struct{intwidth;intheight;};intdataint[2];__m128im;};DXPoint(void);DXPoint(intx,in

计算机速成课Crash Course - 27. 3D 图形

今天继续计算机速成课CrashCourse的系列讲解。更多技术文章,全网首发公众号“摸鱼IT”锁定-上午11点-,感谢大家关注、转发、点赞!计算机速成课CrashCourse-27.3D图形(qq.com)27.3D图形在过去五集,我们从基于电传打字机的命令行界面,讲到图形怎么显示到屏幕上,再到上集的图形用户界面(GUI),以及图形界面的美味。之前的例子都是2D,但我们生活的世界是3D的,所以今天,我们讲3D图形的基础知识,以及如何渲染3D图形到2D屏幕上。24集中说过可以写一个函数,从A到B画一条线,通过控制A和B的(X,Y)坐标,可以控制一条线。在3D图像中,点的坐标不再是两点,而是三点X