C++ 呈现文本时DirectX 11堆溢出
我在DirectX 11中使用DWrite.h呈现文本时遇到问题。我正在尝试编写一个应用程序,它将作为我未来游戏的菜单。当我显示按钮时,有时(并非总是)会出现错误(visual studio在Button.cpp中的ID2D1RenderTarget::EndDraw()上显示)。在我提到的通道中,错误并没有说太多(“Gra.exe触发了一个断点”)。当我单击“继续按钮”时,它显示问题与“堆损坏”有关。几天来,我一直在努力为自己找问题。我检查了所有内存分配等,但什么也没找到。奇怪的是,这个错误完全是随机的——有时会显示,有时不会 有指向我的代码的链接:C++ 呈现文本时DirectX 11堆溢出,c++,directx-11,heap-corruption,C++,Directx 11,Heap Corruption,我在DirectX 11中使用DWrite.h呈现文本时遇到问题。我正在尝试编写一个应用程序,它将作为我未来游戏的菜单。当我显示按钮时,有时(并非总是)会出现错误(visual studio在Button.cpp中的ID2D1RenderTarget::EndDraw()上显示)。在我提到的通道中,错误并没有说太多(“Gra.exe触发了一个断点”)。当我单击“继续按钮”时,它显示问题与“堆损坏”有关。几天来,我一直在努力为自己找问题。我检查了所有内存分配等,但什么也没找到。奇怪的是,这个错误完
如果有任何帮助,我将不胜感激。请慢慢来,将问题格式化,并在此处包含相关代码。在我看来,没有人会调试您的代码,尤其是像这样…:/很难用其他方式形成它。VS并没有真正说明发生了什么以及发生了什么。错误似乎是随机的,试着把问题封装起来。可能缺少一些静态类的初始化等等。我认为没有人会因为发现错误而阅读你的整个回购协议;当我将这个数组的大小更改为“wcslen(newText)+1”时,应用程序现在并没有那个么难崩溃。在那次改变之前,它每30次就正常运行一次,而不是很少崩溃。有人能告诉我为什么要这样分配吗?我使用安全函数来复制值,不可能复制太多。只是不明白。你为什么在这里使用新的接线员?最简单的方法是只使用std::string或std::wstring。这不适合你。如果需要指向w_字符的指针,只需调用std::wstring.c_str()即可获得该指针。