我试图释放一个数组只有它包含的东西,但我可能会遇到一个问题,因为我的代码将数据存储在该数组中,当我更改数组读取的文件时,它必须释放它数组,因为如果我想再次存储这些字符,它只会添加它们,而不是覆盖它们。
问题是编译器中出现此错误:0 [main] DNAA 2160 cygwin_exception::open_stackdumpfile: Dumping stack trace to DNAA.exe.stackdump
它不起作用,我不知道出了什么问题。
void nacitanie(int *i, char *pole){
//some code....
int a, x=0;
char z;
//reading from file..
//condition if contains data, free it before running again
if (pole != NULL)
{
free (pole);
pole = NULL;
}
while( (z = getc(fp)) != EOF)
{
pole[*i] = z;
(*i)++;
}
for(a=0; a<*i; a++){
if(pole[a] == 'A' || pole[a] == 'C' || pole[a] == 'G' || pole[a] == 'T' || pole[a] == 'a' || pole[a] == 'c' || pole[a] == 'g' || pole[a] == 't'){
x++;
}else{
x--;
}
}
if(x==a){
printf("Sekvenciu sa podarilo nacitat\n");
fflush(stdout);
}else{
printf("Sekvencia nesplna podmienky\n");
fflush(stdout);
}
fclose(fp);
if(fclose(fp) == EOF)
printf("Subor sa nezatvoril");
}
malloc在main函数中,其中是读取函数
int main() {
int i=0;
char *pole = malloc(MAX);
//vstup z klavesnice
char c;
while(1)
{
switch(c = getchar())
{
case 'v':
trojica();
break;
case 'n':
nacitanie(&i, pole);
break;
case 'h':
histogram(&i, pole);
break;
MAX定义为该数组的1000个字符