自由数组语法和定义malloc

时间:2014-11-16 22:56:33

标签: c arrays malloc free

我试图释放一个数组只有它包含的东西,但我可能会遇到一个问题,因为我的代码将数据存储在该数组中,当我更改数组读取的文件时,它必须释放它数组,因为如果我想再次存储这些字符,它只会添加它们,而不是覆盖它们。 问题是编译器中出现此错误: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个字符

0 个答案:

没有答案