Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自由数组语法和定义malloc_C_Arrays_Malloc_Free - Fatal编程技术网

自由数组语法和定义malloc

自由数组语法和定义malloc,c,arrays,malloc,free,C,Arrays,Malloc,Free,我试图仅在数组包含某些内容时释放该数组,但我的标题可能有语法问题,因为我的代码将数据存储在该数组中,当我更改数组读取的文件时,它必须释放该数组,因为如果我想再次将这些字符存储在其中,它只会添加它们,而不会覆盖它们。 问题是编译器0[main]DNAA 2160 cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到DNAA.exe.stackdump中时出现此错误 它不起作用,我不知道出了什么问题 void nacitanie(int *i, char *po

我试图仅在数组包含某些内容时释放该数组,但我的标题可能有语法问题,因为我的代码将数据存储在该数组中,当我更改数组读取的文件时,它必须释放该数组,因为如果我想再次将这些字符存储在其中,它只会添加它们,而不会覆盖它们。 问题是编译器0[main]DNAA 2160 cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到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");
}

对于该数组,MAX被定义为1000个字符

到底是什么问题?释放内存的语法应该是if-pole!=空{free pole;pole=NULL;}@无济于事的风向标。我在我提供的代码中定义了malloc,我编辑了free函数,没有什么只是错误。如果您遇到了听起来像是编译时错误的问题,请提供一个完整的最小工作示例来重现错误。您已经发布了两个片段,它们不足以在没有剩余代码的情况下再现错误。您可以释放pole并将其设置为NULL,然后在NULL指针取消引用后立即使用pole。我想你的意思是清除磁极而不是释放它:memsetpole,0,MAX;
 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;