1
我已撥出對準32個字節雙打的陣列爲什麼vmovapd會導致段錯誤?
double *dst;
posix_memalign((void**)&dst, 32, 4*sizeof(double));
我後來用_mm256_store_pd(dst,q);
和爲什麼一個段錯誤發生在這裏的指令
vmovapd YMMWORD PTR [rdi],ymm0
得到偶爾的段錯誤?除了對齊之外,vmovapd
是否會導致段錯誤?
'可以vmovapd導致段錯誤的原因,而不是對齊嗎?是的,在NULL指針(或其他無效訪問)。使用調試器並在發生故障的位置查看RDI,以查看它是錯位還是簡單無效。 (嘗試使用gdb的'x'命令來轉儲內存,如果gdb表示無效訪問,那麼即使它已經對齊,你也知道這是一個糟糕的指針。) –
@PeterCordes謝謝,我檢查指針是否有效。我檢查了一個核心轉儲,發現在一個案例中我傳遞了一個未對齊的指針。 – stardt