我試圖釋放一個struct size_t變量和char的元素。如何釋放的size_t的,因爲我不斷收到警告信息,如如何從結構中釋放size_t
[Warning] passing arg 1 of `free' makes pointer from integer without a cast
現在我明白了,我需要做一個演員,但我不知道怎麼辦!這裏的代碼:
typedef struct collection
{
char **c;
size_t nc, na, ne;
} TCS, * ACS;
void Destroy(ACS *x)
{
int i;
free((*x)->na);
for(i=0;i<(*x)->nc;i++)
free((*x)->c[i]);
free((*x)->c);
free((*x)->nc);
free((*x)->ne);
}
/* allocating */
ACS AlocCS(size_t d, size_t e)
{
ACS *af=(ACS*)malloc(d);
if(af==NULL)
return 0;
(*af)->na=e;
(*af)->nc=d;
(*af)->c=(char**)calloc(e*d,sizeof(char));
if((*af)->c==NULL){
free(af);
return 0;}
return *af;
}
我收到3警告,所有與na,ne,nc有關。我在跳什麼?謝謝! LE:謝謝大家,我的項目現在正常運作!節日快樂!
那麼,他有某種意義。他分配了整個'struct collection'對象,其中包含這些對象。但釋放所述對象會自動釋放它們,所以是的,單獨釋放它們是沒有意義的。 – delnan
我有,但沒有發佈功能。現在編輯。 – SpaceNecron
@ user1889921請將該信息添加到您的問題,請勿發表評論。 – Rubens