我有以下功能:
int* getDifference(char* s1, char* s2){
int* difference = (int*) malloc(sizeof(s1) / sizeof(s1[0]) * sizeof(int));
for(int i = 0; i < strlen(s1); ++i){
difference[i] = (s1[i] - s2[i] + 26) % 26;
}
return difference;
}
如果我尝试使用以下方式调用它:
char* encryptedSignature = "hello";
char* signature = "volvo";
int* key = getDifference(encryptedSignature, signature);
free(key);
在运行时导致以下错误:
/ bin / sh:第1行:10508分段错误:11 ./code&lt; input001.txt make:*** [code]错误139
为什么会这样?还有另一种方法可以做到吗?
EXTRA:
如果我使用Sublime Text进行构建,我会得到:
代码(10470,0x7fffdf5f83c0)malloc:***对象的错误 0x7fea1d402648:释放对象的校验和不正确 - 对象是 可能在被释放后被修改。 ***在malloc_error_break中设置一个断点来调试/ bin / sh:第1行:10470中止陷阱:6 ./code&lt; input001.txt make:*** [code] 错误134