1

与えられたメモリ割り当て:

struct typeA *p = malloc(sizeof(struct typeA));

そして、たとえば関数内のどこかに、2 つの選択肢があります。

void func(void *q)
{
     ....
    free(q);
}

void func(void *q)
{
    ....

    struct typeA *pp = (struct typeA *)q;
    free(pp); 
}

どちらもOKですか、それとも2番目だけでOKですか? なんで?

4

3 に答える 3

1

はい、そうです。

は void ポインターを待っているためfree()、コンパイラーは必要に応じてポインターを に変換しますvoid *

于 2013-06-13T15:12:01.537 に答える