说我有这段代码:
__m256i i1, i2, i3;
memcpy(&i1, p + offsets[0], n);
memcpy(&i2, p + offsets[1], n);
memcpy(&i3, p + offsets[2], n);
// etc
并且n
设置为大于32。
我知道不好的事情会发生在我身上-但我实际上还没有看到这段代码段错误。我知道clang的地址清理器抱怨堆栈损坏,并且检查程序集发现它没有优化对memcpy
的调用。英特尔/ C ++提供哪些保证(如果有)?