如何解决同一指针的值根据我在何处调用而不同
我的程序正在使用主函数来提示用户选择要使用的函数,然后将引用发送到指向其所选函数的char double指针。在函数中,我为字符串数动态分配内存。然后,为每个字符串分配内存,具体取决于传入的字符串长度。
void readFile(char *** fileAsArray){
/* file name found,file opened,set to FILE *input */
int numWords = 0;
*fileAsArray = malloc(5000 * sizeof(**fileAsArray));
while(fgets(line,sizeof(line),input){
char *word = strtok(line," \n");
while(word){
int wordSize = strlen(word);
int i;
(*fileAsArray)[numWords] = malloc(wordSize * sizeof((**fileAsArray)[numWords]));
(*fileAsArray)[numWords] = word;
printf("%s",(*fileAsArray)[numWords]); // CORRECT WHEN CALLED HERE
numWords++;
word = strtok(NULL," \n");
}
}
printf("%s",(*fileAsArray)[0]); //INCORRECT WHEN CALLED HERE??
}
解决方法
(*fileAsArray)[numWords] = malloc(wordSize * sizeof((**fileAsArray)[numWords]));
(*fileAsArray)[numWords] = word;
正在用word
覆盖指向已分配缓冲区的指针,并导致内存泄漏。
strcpy()
应该用于复制字符串。
您还忘记分配以终止空字符。
该部分应为:
(*fileAsArray)[numWords] = malloc((wordSize + 1) * sizeof((**fileAsArray)[numWords]));
strcpy((*fileAsArray)[numWords],word);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。