您好我每次在解析循环找到文件时尝试在我的char*
中main()
数组中使用realloc
数组,然后在外部函数中malloc
。除了realloc
的{{1}}和char * files[]
之外,我的所有代码都有效。
当我运行以下代码时,我收到此错误
*** Error in `./Assignment2': double free or corruption (out): 0x00007ffcefe78e50 ***
======= Backtrace: =========
--Lots of memory locations listed--
Aborted (core dumped)
MAIN.C
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
char **files = malloc(sizeof(char*));
/* parse the command line arguments */
parseArguments( argc, argv,&files);
}
parse.c
#include <stdlib.h>
#include "stddef.h";
#include <stdlib.h>
#include <argp.h>
char* printUsage();
extern int parseArguments(int argc, char *argv[], char *files[]) {
int i = 1;
int amtFiles = 0;
/** Loops through each item turning on and off switches*/
while (argc > 1) { /* i moves left to right 0 is file name so start at 1*/
if (isFile(argv[i]) == 1) { /*if its a file */
*files = realloc(files, amtFiles * sizeof *files);
*files[amtFiles] = argv[i];
/*printf("%s",*files[amtFiles]);*/
amtFiles++;
}
}
i++;/* increment argv[i] to next inputted char*/
argc--; /* decrement the total amount of arguments to go through */
}/*Loop ends */
}
我假设它有一个指针错误,但很难搞清楚,因为我是C的新手并且指针仍然有点令人困惑。如果您还可以包含链接或说明,我们将不胜感激。
答案 0 :(得分:-1)
在你的主文件中是一个char **(并且你传递了它的地址,所以参数实际上是一个char ***)但是parseArguments只接受一个char * []。
为你的主文件添加一个原型是一个char **(你传递它的地址,所以参数实际上是一个char ***)nut parseArguments只接受一个char * []。在main.c中,编译器会告诉你这个。我怀疑这是你的主要是正确的,但我还没有解析代码以确保这一点。