我认为这是一个编译器错误,这不应该影响我的代码,但它是

I think this is a compiler error, this shouldn't be affecting my code but it is

本文关键字:不应该 影响 我的 错误 代码 一个 编译器      更新时间:2023-10-16

我的主函数的代码中有这个。

{
    int buncha_ints[] = { 0, 0, 0, 0, 0 };
}
当它不存在时,我的程序

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

这确实是我的问题,但如果需要更多细节,这是一个相当简单的 DirectX11 Win32 程序。我只是将 2 个正方形渲染到屏幕上,当我将上面的代码放入其中时,它不再渲染。我无法渲染第三个正方形,经过实验,我发现了一些奇怪的问题,归结为上面的问题,每当分配超过 4 个字节的东西时,无论它在哪里,即使它从未被调用,我的程序也会停止渲染。这似乎值得注意,我的目标平台是 32 位。

这是访问错误内存位置的典型标志。 即在程序的其他部分中,您正在执行超出范围的访问。当您定义该数组时,您只是在移动内存块。只需简单地使用valgrind来检查一下。