VS中关于Debug Assertion failure 错误解决办法

目前,在我项目中出现这种问题一般有两种情况,

1.野指针问题

   野指针是特别头疼的一个问题,往往Debug也不好找出正确的位置,话不多说,上方法:Debug单步调试,当遇到死机那句时,查看窗口句柄是否为空NULL,如果为空,有三种可能

1)可能是创建窗口对话框不成功,这时调用的时候就会出现句柄为空,死机的问题,在创建对话框Creat函数打断点,看是否创建成功了。

2)调用的显示或者隐藏等操作对话框功能的语句调用在创建对话框之前。这样找不到资源也会死机。

3)野指针问题,对指针没有进行初始化操作,尤其是定义全局变量的指针。查找死机语句周围附近有没有没有初始化的指针。此外,指针建议采用这种定义方式:

CEditFileView *g_pView = NULL; //在源文件中定义为空

extern CEditFileView *g_pView; //在头文件中extern一下

g_pView=this;//在源文件配置函数中赋值为this,this指针的用法自己百度

VS中关于Debug Assertion failure 错误解决办法_第1张图片

2.字节对其问题

     很多时候,我们在使用结构体时都会遇见需要字节对其的问题,例如我们需要结构体一字节对其就会使用到

#pragma pack(1)   ,但是往往会忽略另一个问题,就是#pragma pack是成对存在的,这是一个不能忽视的问题,在结构体开头如果使用了#pragma pack(1)那么在结构体最后一定要加一个#pragma pack(),不然会出现很多奇怪的错误。如上图所示,而且出现错误的方式还不一定,所以在这里提醒大家,一定要注意!!!!#pragma pack的使用方法如下:

 

#pragma pack(1)

超多个结构体

........

........

#pragma pack()

你可能感兴趣的:(MFC,C++)