我似乎在函数内部重新分配数组内存时遇到了问题。每当代码到达realloc时,它就会由于Segmentation错误而关闭。
我主要调用malloc:
char* coded_message = (char*) malloc(BASE_LENGTH * sizeof(char));
read_input(&coded_message, &original_message, &char_counter);
然后将其传递给一个函数,该函数正在读取输入,如果需要,则重新分配内存。所以我的功能是这样的:
int read_input(char** coded_message){
...
*coded_message = (char*) realloc(*coded_message, (counter + REALLOC_LENGTH) * sizeof(char));
...
}
C使用传递值。函数参数是按值传递给被调用函数的,因此对参数所做的任何更改都不会反射回调用方。
在这种情况下,从函数read_input()
,对original_message
的赋值(realloc()
的返回值(将不会反映回调用方main()
。
换句话说,您可以更改read_input
指向的内容,可以更改,但read_input
本身不能更改。如果要更改指针本身,则需要将指针传递给该指针。