你把那个字符串删一个字符确保它长度是16而不是17再看看,是否还会sigsegv。
现实情况是我用clang/gcc跑了这个片段都没问题,但是clang-tidy指出只有这个地
方是可疑点。
#include <iostream>
static constexpr int kStateSize = 16;
inline void xor_data(unsigned char data[kStateSize], const
unsigned char v[kStateSize]) {
for (int i = 0; i < kStateSize; ++i) data[i] ^= v[i];
}
int main() {
// Crashed path
unsigned char iv[16];
memcpy(iv, "str-with-16-char", 16);
// Safe path
// unsigned char iv[16]=
{'a','b','c','d','e','f','g','H','3','a','w','G','d','4','j','f'
};
unsigned char data[16];
xor_data(data, iv);
std::cout << "Hello, World!" << std::endl;
return 0;
}
【 在 hicharlie (马上诗人) 的大作中提到: 】
: 这个我知道,所以使用memcpy拷贝进去的,另外定义的是数组,memcpy拷贝是没问
题的。
: 后面那个分开字符定义的其实内存中数据是一样的。
--
FROM 222.129.50.*