我正在从指针进行强制转换,然后它让我运行这个警告(赋值使指针从没有强制转换的整数)。这是代码:
#include<stdio.h>
#include<stdbool.h>
typedef int TipoChave;
typedef struct TipoRegistro {
TipoChave Chave;
/*outros componentes*/
} TipoRegistro;
typedef struct TipoPagina* TipoApontador;
typedef struct TipoPagina {
int registros;
TipoRegistro *r;
TipoApontador *p;
} TipoPagina;
TipoApontador NovaSubArvore(int ordem){
TipoApontador A;
A=malloc(sizeof(TipoPagina));
int i;
A->registros=0;
A->r=malloc((2*ordem)*sizeof(TipoRegistro));
A->p=malloc((2*ordem+1)*sizeof(TipoPagina));
for (i=0;i<(2*ordem+1);i++){
A->p[i]=NULL;
if(i!=2*ordem){
A->r[i].Chave=0;
}
}
return (A);
}
我主要打电话:
TipoApontador Raiz;
然后:
Raiz=NovaSubArvore(ordem); //Warning happens here
如果我做:
if (Raiz!=NULL)
free(Raiz);
它运行无效的免费(奇怪,因为如果 Raiz 为 NULL,则免费不应该运行。有人可以帮我解决这个问题吗?我认为这个警告也是让我无法“释放”的问题。
编辑:好的关于waring的问题已解决。但是,如果我免费执行 2 次,它会运行无效的免费(我有一个可以免费执行某些操作的函数,其他时候没有。如果我执行免费,“if(Raiz!=NULL)”应该阻止另一个免费运行。但它不是。