strcpy misalignment __strcpy_sse2_unaligned()

时间:2017-04-28 17:41:07

标签: c strcpy

解决__strcpy_sse2_unaligned()问题的正确方法应该是什么? 即。 strcpy(enc_buf, base64_encode(buf));导致gdb中的__strcpy_sse2_unaligned() 那么有什么预防措施可以防止这种事情发生呢?

1 个答案:

答案 0 :(得分:2)

编译器无法确定源和目标char*是否对齐(通常是字对齐或甚至是四字对齐),因此正在备份到未对齐但可能已优化的strcpy例程。你需要明确暗示它正在做的错过猜测;否则,它只会放弃:对于SSE通常不允许未对齐访问,或者仍然非常慢。

但是,如果你遇到了段错误,那么它就不太可能是库问题(它是一个很大程度上使用的函数)而且它不会是由于错位造成的。例如,由于缓冲区溢出,您的代码很可能在某处显示未定义的行为。使用valgrind-fsanitize=address检查您的指针。