我只是尝试使用malloc,代码运行良好,但是visual studios给了我一些问题。你应该这样做还是我做错了?
警告显示在行上:

chadley->name = "chadley"

#include <stdio.h>
#include <stdlib.h>


typedef struct {
    int age;
    char *name;
} Person;


int main()
{
    Person bradley;
    bradley.name = "bradley";
    bradley.age = 2334444;

    Person *chadley = malloc(sizeof(Person));
    chadley->name = "chadley";
    chadley->age = 234;

    printf("Person object %s of age %d", chadley->name, chadley->age);
}

错误代码:取消引用空指针“chadley”

最佳答案

Person *可以是空指针。它指的是值,而不是类型。
如果未能成功分配内存,malloc将返回一个NULL值。在使用之前,您应该始终检查从malloc返回的值。
您可以检查返回的指针是否有效,方法如下:

Person *chadley = malloc(sizeof(Person));

if (!chadley) {
    /* The allocation failed, don't continue. */
    return 1;
}

chadley->name = "chadley";
chadley->age = 234;

关于c - Visual Studios给我取消引用空指针警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56995537/

10-11 22:13