未经警告(GCC-14.2.1
double
)编译以下代码并运行良好(在GNU/Linux 6.13.2-ark1-1):
g++ -mavx -pedantic -Wall
segfault segfault Asan(
#include <immintrin.h>
#include <cstdio>
int main() {
double* ptr = new double {};
double buf[4];
_mm256_storeu_pd(buf, _mm256_loadu_pd(ptr));
delete ptr;
std::printf("%e\n", buf[3]);
}
未定义的行为并不意味着“ segfault”。这意味着“任何事情都可能发生”,如果英特尔指令集手册说“执行不一致的访问”,它将执行不与对齐的访问。