Delphi 2009中的OpenGL 3.2在FullDebugMode中使用带有UBO的FastMM 4.97问题

| 我坐在Delphi 2009中的OpenGL 3.2应用程序中。将FastMM 4.97与FullDebugMode一起使用时,UBO无法正确获取其数据。使用FullDebugMode undefined,一切都可以像超级按钮一样工作。 例: 在我们的渲染框架类中,设置指向两个私有整数字段FWidth和FHeight的视口尺寸。
glBufferSubData(GL_UNIFORM_BUFFER, VUniform.Offset, VUniform.Size, @FWidth);
我已经花了几天时间解决这个问题,我真的不知道该如何进行。我不希望在这里得到完全的OpenGL支持,但希望有人可以基于FullDebugMode与否之间的已知差异提出一些建议。 项目设置:
[Compiling]
Optimization    False
Stack frames    True
Use debug .dcus True
[Linking]
Debug info      True
Map file        Detailed
操作系统是Windows 7 64位。 编辑: 找到了! 它与OpenGL完全无关。在我们代码库的其他地方,函数使用ѭ2返回了PAnsiChar。这在大多数情况下可以正常运行,因为只释放了内存但未更改。在FullDebugMode中,释放数据时,数据被$ 80序列覆盖。     
已邀请:
您可能正在查看已过早释放(由您自己的应用程序释放)的内存。 通常,您仍然可以访问旧值,直到旧值被新的分配+写操作覆盖为止。即使您正在访问过时的(已释放)内存部分,这也很可能使您的应用程序正常运行。 但是,在FullDebugMode中,释放的内存由字节$ 80序列填充。如果您知道对glBufferSubData的确切调用会中断,则可以轻松地进行检查,只需查看此时的内存即可。     

要回复问题请先登录注册