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