Run-Time Check Failure #2 - Stack around the variable 'bmih' was corrupted.

wumin940590725 2014-01-02 10:01:34
个人认为两个红色标注的地方是错误的,但是不会改,希望好心人指点下谢谢
 	
HWND hWnd = pDlg->m_hWnd;
HDC hdcTemp = pDlg->GetDC()->m_hDC;
HDC m_hdcMemory = CreateCompatibleDC(hdcTemp);

BYTE *pBits;
BITMAPINFOHEADER bmih;
ZeroMemory(&bmih,sizeof(BITMAPINFO));
//SecureZeroMemory(&bmih,sizeof(BITMAPINFO));

bmih.biSize = sizeof(BITMAPINFOHEADER);
bmih.biWidth = nWidth;
bmih.biHeight = nHeight;
bmih.biPlanes = 1 ;
bmih.biBitCount = 32;
bmih.biCompression = BI_RGB;
bmih.biSizeImage = 0 ;
bmih.biXPelsPerMeter = 0 ;
bmih.biYPelsPerMeter = 0 ;
bmih.biClrUsed = 0 ;
bmih.biClrImportant = 0 ;
HBITMAP hBitMap = CreateDIBSection(NULL,(BITMAPINFO*)&bmih,0,(VOID**)&pBits,NULL,0);
//============================================================================================
SelectObject(m_hdcMemory,hBitMap);
...全文
559 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumin940590725 2014-01-02
  • 打赏
  • 举报
回复
引用 2 楼 derekrose 的回复:
project->配置属性->c/c++->代码生成->基本运行时检查 设置到默认值
这样做是为什么能说下吗?谢谢,对了补充一句:修改这个之后就对了
wumin940590725 2014-01-02
  • 打赏
  • 举报
回复
想想看还是这样清楚点
	HWND hWnd = pDlg->m_hWnd;
 	HDC hdcTemp = pDlg->GetDC()->m_hDC;
	HDC m_hdcMemory = CreateCompatibleDC(hdcTemp);
	
	BYTE *pBits;
	BITMAPINFOHEADER bmih;//初始化bmih是BITMAPINFOHEADER类型
	ZeroMemory(&bmih,sizeof(BITMAPINFO)); 
	//SecureZeroMemory(&bmih,sizeof(BITMAPINFO));//此处bmih是pvoid类型
	
	bmih.biSize				= sizeof(BITMAPINFOHEADER);
	bmih.biWidth			= nWidth;
	bmih.biHeight			= nHeight;
	bmih.biPlanes			= 1 ;
	bmih.biBitCount			= 32;
	bmih.biCompression		= BI_RGB;
	bmih.biSizeImage		= 0 ;
	bmih.biXPelsPerMeter	= 0 ;
	bmih.biYPelsPerMeter	= 0 ;
	bmih.biClrUsed			= 0 ;
	bmih.biClrImportant		= 0 ;
	HBITMAP hBitMap = CreateDIBSection(NULL,(BITMAPINFO*)&bmih,0,(VOID**)&pBits,NULL,0);//此处bmih是BITMAPINFO*类型
	//============================================================================================
	SelectObject(m_hdcMemory,hBitMap);
derekrose 2014-01-02
  • 打赏
  • 举报
回复
project->配置属性->c/c++->代码生成->基本运行时检查 设置到默认值
wumin940590725 2014-01-02
  • 打赏
  • 举报
回复
个人认为是第八行和第二十二行bmih引用出现了问题
 	HWND hWnd = pDlg->m_hWnd;
 	HDC hdcTemp = pDlg->GetDC()->m_hDC;
	HDC m_hdcMemory = CreateCompatibleDC(hdcTemp);
	
	BYTE *pBits;
	BITMAPINFOHEADER bmih;
	ZeroMemory(&bmih,sizeof(BITMAPINFO)); 
	//SecureZeroMemory(&bmih,sizeof(BITMAPINFO));
	
	bmih.biSize				= sizeof(BITMAPINFOHEADER);
	bmih.biWidth			= nWidth;
	bmih.biHeight			= nHeight;
	bmih.biPlanes			= 1 ;
	bmih.biBitCount			= 32;
	bmih.biCompression		= BI_RGB;
	bmih.biSizeImage		= 0 ;
	bmih.biXPelsPerMeter	= 0 ;
	bmih.biYPelsPerMeter	= 0 ;
	bmih.biClrUsed			= 0 ;
	bmih.biClrImportant		= 0 ;
	HBITMAP hBitMap = CreateDIBSection(NULL,(BITMAPINFO*)&bmih,0,(VOID**)&pBits,NULL,0);
	//============================================================================================
	SelectObject(m_hdcMemory,hBitMap);
第八行中ZeroMemory调用的是*void类型,而定义的是BITMAPINFOHEADER 类型 ZeroMemory Macro Fills a block of memory with zeros. To avoid any undesired effects of optimizing compilers, use the SecureZeroMemory function. void ZeroMemory( [in] PVOID Destination, [in] SIZE_T Length ); 第二十二行中的BITMAPINFOHEADER 的bmih被改成了BITMAPINFO*类型
typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER    bmiHeader;
    RGBQUAD             bmiColors[1];
} BITMAPINFO
typedef struct tagBITMAPFILEHEADER {
        WORD    bfType;
        DWORD   bfSize;
        WORD    bfReserved1;
        WORD    bfReserved2;
        DWORD   bfOffBits;
} BITMAPFILEHEADER
1、课程简介          ElasticStack 是一系列开源产品的合集,包括 Elasticsearch、Kibana、Logstash 以及 Beats 等,能够安全可靠地获取任何来源、任何格式的数据,并且能够实时地对数据进行搜索、分析和可视化。其中,Logstash和Beats负责数据的收集,Kibana负责结果数据的可视化展现,Elasticsearch作为核心部分用于数据的分布式存储以及索引。   我们可以使用ElasticStack进行收集并处理任何数据,最为经典的是用于实时日志数据的收集、存储、展现。在此之前,如果实现实时日志的分析,需要经过繁琐的架构设计并且使用多个系统实现,现在只需要使用ElasticStack即可实现功能强大的实时日志分析系统,ElasticStack不仅仅用来做日志分析,它可以处理任何的数据并且进行存储、展现。          在本套课程中,我们将全面的讲解ElasticStack技术栈,从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用ElasticStack如何解决实际的问题,我们通过收集系统日志数据、服务器指标数据、nginx的运行数据等,多维度的展示了ElasticStack的应用范围,最终将分析的结果数据非常友好的展现出来,没错!不需要前端的参与也可以做出“高大上”的结果显示页。   2、适应人群   有一定的Java基础,并且要有一定的web开发基础。   3、课程亮点          系统的学习ElasticStack技术栈,掌握最先进的搜索、数据收集等技术。   l  Elasticsearch   n  快速入门   n  核心详解   n  中文分词   n  Elasticsearch集群   n  Java客户端的应用   l  Beats & Kibana & Logstash   n  Filebeat(文件采集器)   n  Metricbeat(指标采集器)   n  采集Nginx的日志以及指标数据   n  Kibana自定义仪表盘   n  Logstash自定义数据处理   l  综合练习   n  收集APP产生的日志进行实时展现   n  Filebeat采集日志   n  Logstash处理数据   n  Kibana 自定义仪表盘展现   4、主讲内容   章节一:Elasticsearch入门   1.     快速入门   2.     核心讲解   3.     中文分词   4.     全文搜索   5.     Elasticsearch集群   章节二:Beats   1.     Beats 简介   2.     Filebeat采集Nginx日志   3.     Metricbeat采集Nginx指标数据   章节三:Kibana   1.     Kibana简介   2.     Metricbeat 仪表盘   3.     Nginx 指标仪表盘   4.     Nginx 日志仪表盘   5.     自定义图表   章节四:Logstash   1.     Logstash简介   2.     配置详解   3.     读取自定义日志   章节五:综合练习   1.     流程说明   2.     Filebeat采集日志   3.     Logstash处理数据   4.     Kibana 自定义仪表盘展现

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧