c - 在 C 函数中将结构指针设置为 NULL

标签 c pointers

我尝试使用函数释放结构指针,然后检查是否为 NULL。这是行不通的!

typedef struct{
    int * num;
} D;

void freeD(D * a){
    free(a->num);
    free(a);
    a=NULL;
}
int main(){
    D * smth = malloc(sizeof(D));
    smth->num = malloc(sizeof(int)*2);
    freeD(smth);
    if(smth==NULL){
    printf("It's NULL");
    }
}

最佳答案

您必须通过引用传递指针,即使用指向指针的指针。

例如

void freeD(D ** a){
    free( ( *a )->num);
    free(*a);
    *a=NULL;
}

//...

freeD( &smth );

关于c - 在 C 函数中将结构指针设置为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41665166/

相关文章:

c - 在 C 中使用多个不同的函数

c++ - 指针是否保证 > 某个值?

c++ 危险指针实践?

c++ - 如何对指向另一个字符数组的指针数组进行冒泡排序

c - OpenSSL如何加载DER格式的CA证书

c - libesmtp 和文件附加

c - 为什么我无法在系统("CLS"之后执行?

c - C 中指向动态数组的指针

C程序的困惑输出

c - GtkWindow 未被文件选择器识别为 C