C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用CreateWindowExW时堆损坏大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些堆损坏的问题.使用CreateWindowExW函数时可以观察到警告.我知道这通常是一个内存错误,但我怎么能在这种情况下搜索它?在调用CreateWindowExW之前没有新变量,我无法进入此函数.这是代码.

HWND GetMainWnd(HINSTANCE hInstancE){
static HWND hWnd = NULL;
if (hWnd)
    return hWnd;

RETURN_AT_ERROR(hInstance,null);

WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
wcex.style          = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc    = MainWndProc;
wcex.hInstance      = hInstance;
wcex.hcursor        = ::LoadcursorW(NULL,IDC_ARROW);
wcex.lpszClassName  = g_config->GetWndClass();

ATOM atom = ::registerClassExW(&wceX);
RETURN_AT_ERROR(atom != 0,null);

hWnd = ::CreateWindowExW(WS_EX_LEFT,g_config->GetWndClass(),WS_POPUP | WS_MINIMIZEBox | WS_CLIPCHILDREN,hInstance,0);

return hWnd;}

在这个字符串上

hWnd = ::CreateWindowExW(WS_EX_LEFT,0);

一个警告信息框

我按“继续”,然后显示

Unhandled exception at 0x77dae753 in app.exe: 0xC0000374: A heap has been corrupted.

但是,CreateWindowExW返回一个非零值,并创建窗口,因为它应该…

解决方法

如上所述,在您的进程中加载​​的某些DLL /模块已经发生实际损坏之后,通常会检测到堆损坏.从你的帖子看起来这个问题是特定于Windows平台的,所以我建议你使用WinDBG / Pageheap并找出实际内存损坏发生的地方.关于堆内存损坏分析的一篇非常好的文章可以在“高级Windows调试,作者:作者:Mario HeWARDt; Daniel Pravat”一书中找到.

http://advancedwindowsdebugging.com/ch06.pdf

大佬总结

以上是大佬教程为你收集整理的c – 使用CreateWindowExW时堆损坏全部内容,希望文章能够帮你解决c – 使用CreateWindowExW时堆损坏所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。