【发布时间】:2014-06-02 22:15:14
【问题描述】:
为什么以下代码在使用 gcc 编译时运行良好,但在使用 clang (3.4) 编译时出现段错误。如果删除了明显多余的 Thread 对象,则代码运行良好。此外,如果任何数组变小,代码运行良好。
#include <array>
#include <emmintrin.h>
class Thread {
public:
std::array<__m128i, 16 * 3 * 3 * 1280> m_BlockTypes;
unsigned int m_SeedIdx1[16 * 16 * 3 * 3 * 512];
};
class BroadcastImpl
{
public:
std::array<__m128i, 16 * 3 * 3 * 256> Evaluate()
{
return std::array<__m128i, 16 * 3 * 3 * 256>();
}
};
int main(int argc, char** argv) {
Thread thread;
(void)(thread);
BroadcastImpl().Evaluate();
BroadcastImpl().Evaluate();
}
【问题讨论】: