我认为这是一个编译错误,这不应该影响我的代码,但确实如此

时间:2015-01-12 22:41:47

标签: c++ winapi directx directx-11

我的主要功能代码中有这个。

{
    int buncha_ints[] = { 0, 0, 0, 0, 0 };
}

当它不存在时我的程序工作正常,当它在那里我的程序不起作用。我的问题是,这不应该没有任何影响吗?打开一个新范围,然后立即关闭。该数组被分配,初始化,然后从堆栈中清除。如果这影响了我的程序的其余部分,这必须是编译器错误吗?

这真的是我的问题,但如果要求更多细节,这是一个相当简单的DirectX11 Win32程序。我只是渲染2个方格到屏幕,当我把上面的代码放在它不再渲染时。我无法渲染第三个方格,经过实验后我发现了一些可以归结为上述问题的奇怪之处,无论何时分配超过4个字节,无论它在哪里,即使它从未被调用,我的程序停止渲染。这看起来很明显我的目标平台是32位。

1 个答案:

答案 0 :(得分:2)

这是访问错误内存位置的典型信号。即某些程序的某些其他部分,您正在进行超范围访问。当您定义该数组时,您只是在移动内存块。只需使用valgrind来检查即可。