所以我有一个程序有时可以工作,但有时却不行。有时放入 printf 语句会使程序神奇地工作(有时 printf 会使它中断)。这让我觉得就指针/分配而言我搞砸了,因为我仍然无法解决一些问题。该程序太长,无法发布所有代码,所以我只显示我认为问题所在。
我得到了一个函数,它接受一个 FILE* 和一些 char** 作为参数,返回一个 int。该函数正在解析文件,将必要的字符串存储到双指针指向的位置。
这是我使用该函数的方式(省略/简化了很多代码):
char **s1;
char **s2;
char **s3;
int main(int argc, char ** argv){
s1 = (char**)malloc(20);
s2 = (char**)malloc(20);
s3 = (char**)malloc(20);
/* Unnecessary code omitted */
read(inFile);
}
int read(FILE* in){
/* omitted code */
parse(in,s1,s2,s3);
printf("%s",*s1); /* This is to show how I access the strings */
}
我很确定在我的程序的某个地方,这些字符串被覆盖了,因为我没有正确分配内存。希望我的错误在我给出的代码片段中可见,因为我没有很多其他理论可以解释为什么我的代码不起作用