为什么我无法在C中使用malloc分配空间?

时间:2017-08-20 09:11:06

标签: c memory-management malloc

我有以下功能:

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

0 个答案:

没有答案