Tag: exception

抛出OpenGLexception:读取访问冲突,窗口为0xCCCCCCCC

我使用的是我在上一个问题中描述的相同框架。 我通过创建一个新的DLL而不是仅仅将项目的构建类型从“Windows应用程序(.exe)”更改为“DLL(.dll)”来解决它。 但是现在当我在我的结构中使用GLFWwindow *类型的变量并尝试写入或读取时。 它总是导致分别弹出写访问或读访问冲突。 exception突然出现,就像窗口开始然后关闭一样,显示exception。 例外情况如下: – 抛出exception:读取访问冲突。 窗口是0xCCCCCCCC。 它发生在GLFW的window.c文件中,它指向尝试读取它的函数。 我甚至尝试使用指针来修改窗口,但它仍然没有用。 这是框架的代码: – 修改! 在window.h #ifndef LIB_GRAPHICS #define LIB_GRAPHICS #ifdef LIB_EXPORTS #define LIB_EXPORT _declspec(dllexport) #else #define LIB_EXPORT _declspec(dllimport) #endif #define LIB_FALSE 0 #define LIB_TRUE 1 #define LIB_BeginRender LIB_SetEvents(); LIB_ClearToColor #define LIB_EndRender LIB_SwapWindowBuffers #define LIB_CENTER_POSITION 0xCEAAFFEE /* Define other things… */ typedef const char* LIB_String; […]

C – 使用_int16时的exception

可能重复: 正确使用具有固定大小类型的scanf / printf(和系列)的方法? 我在Visual Studio中编写了以下程序: 在运行程序并退出时,我收到错误消息“堆栈变量b已损坏”。 如果我用int替换_int 16,则不会引发exception。 我该怎么解决这个问题呢? 我必须使用_int16,因为我想模拟整数溢出。 谢谢 :)

外部链接C库中的exception传播

我正在编写一个使用外部第三方C库的C ++库。 因此,我的图书馆将调用此第三方库中的函数,第三方库将回调到我的库的不同部分。 我想知道在这种情况下exception会发生什么? 假设MyLib :: foo()调用外部C库函数,最终调用MyLib :: bar(),并且bar抛出exception,会发生什么? 将exception正确传播到foo()中的处理程序吗? 谢谢!

通过GCC -fstack-check选项在C中引发了什么exception

根据gcc文档 -fstack-check 生成代码以validation您是否超出了堆栈的边界。 请注意,此开关实际上不会导致检查完成; 操作系统必须这样做。 该开关导致生成代码以确保操作系统看到堆栈被扩展。 我的假设是这个额外的代码会产生exception,让操作系统知道。 使用C语言时,我需要知道额外代码生成了什么exception。 谷歌也没多大帮助。 关闭我知道它是在Ada语言的情况下生成Storage_Errorexception( 参考 )。 我正在开发一种小型操作系统/调度程序,我需要捕获此exception。 我正在使用C / C ++。 我的GCC版本3.4.4

“EXC_BAD_ACCESS:无法恢复以前选择的帧”错误,数组大小?

我有一个算法来创建Eratosthenes的筛子并从中拉出素数。 它允许您输入筛子的最大值,算法为您提供低于该值的质数并将它们存储在c样式数组中。 问题:一切正常,值高达500.000,但是当我输入一个大值 – 运行时 – 它在xcode中给出了以下错误信息: Program received signal: “EXC_BAD_ACCESS”. warning: Unable to restore previously selected frame. Data Formatters temporarily unavailable, will re-try after a ‘continue’. (Not safe to call dlopen at this time.) 我的第一个想法是我没有使用足够大的变量,但是当我使用’unsigned long long int’时,这应该不是问题。 此外,调试器将我指向我的代码中的一个点,其中数组中的一个点被赋值。 因此我想知道arrays有最大限制吗? 如果是:我应该使用NSArray吗? 如果不是,那么基于此信息导致此错误的原因是什么? 编辑:这是代码的样子(它不完整,因为它在发布的最后一行失败)。 我正在使用垃圾收集。 /*————————–SET UP————————–*/ unsigned long long int upperLimit = 550000; // […]

什么事情(或在什么情况下)可以使C ++比C慢?

这是一个面试问题,面试已经完成。 什么东西可以使C ++比C慢? 面试官问得很深,每当我说些什么时总是问“别的什么?”。 我的想法: C中没有的C ++function可能会有一些成本。 例如,如果我们使用赋值来在构造函数内初始化类的成员而不是初始化列表,则可以在构造函数的主体之前调用成员的默认构造函数,然后通过赋值消除该值。 需要通过搜索虚函数指针来调用虚函数。 这是一个开销。 还有更好的想法? 任何帮助将不胜感激。 谢谢 !!!

C(非C ++)的exception库

我正在为C推出我自己的exception库,并希望检查好的例子。 到目前为止,我一直在关注David Hanson: http : //drhanson.net/work/ 但我知道我过去见过其他可用的东西。 你能给我一些额外的指示吗? 谢谢, 那么setjmp

如何在exception中使VC ++的调试器中断?

我正在尝试调试用C编写的DLL中的问题,该问题一直导致访问冲突。 我正在使用Visual C ++ 2008,但代码是直的C. 我已经习惯了Delphi,如果在调试器下运行时发生exception,程序将立即断开调试器,它将为您提供检查程序状态的机会。 但是,在Visual C ++中,我得到的只是Output选项卡中的一条消息: First-chance exception at blah blah blah: Access violation reading location 0x04410000. 没有rest,没有。 它只是进入并展开堆栈,直到它回到我的Delphi EXE中,它识别出错误并在那里提醒我,但到那时我已经失去了几层调用堆栈,我不知道发生了什么。 我已经尝试了其他的调试技术,但无论它在做什么,都是在C宏中的嵌套循环内深处进行的,这个循环被调用超过500次,这只是我的技能(或者我的耐心)来追踪。 我认为必须有一些方法来获得“第一次机会”的例外,实际上让我有机会处理它。 可能有一些“在第一次机会exception时立即中断”配置设置我不知道,但它似乎并不是所有可发现的。 有谁知道它在哪里以及如何启用它?

如果exception被“通过”c代码抛出会发生什么?

可能重复: C ++exception会通过C代码安全传播吗? 如果您有c代码,例如png lib,您自己的io处理程序是用c ++编写的,并且由于某些io错误而引发exception。 让它通过c代码并在c代码之外捕获它是否可以? 我知道必须注意内存泄漏,但通常所有结构都要预先分配。

什么是更好的使用,__try / __除块或try / catch块?

我想知道哪种方法可以捕获我抛出的exception:它是__try / __except块还是try / catch块? 我用C ++编写,程序只能在Windows上使用,因此可移植性不是问题。 谢谢!