在C中释放结构的内存数组

Ric*_*ard 1 c arrays malloc free

假设以下情况:

typedef struct {
    int ID1;
    int ID2;
    char string[256];
} Reg;
Run Code Online (Sandbox Code Playgroud)

我动态创建一个数组,这个结构:

Reg *myReg = (Reg*) malloc(sizeof(Reg)*100); //array of type Reg with 100 positions.
Run Code Online (Sandbox Code Playgroud)

在整个示例系统中,我填充了这个数组.

有一点我不希望指针"myReg"指向这个向量.我希望他指向NULL.并且还要清除malloc所占用的内存空间.

题:

如果我做:

free(myReg);
Run Code Online (Sandbox Code Playgroud)

这将使myReg指向NULL并释放我已分配的占用空间?

cni*_*tar 5

free(myReg);
Run Code Online (Sandbox Code Playgroud)

这将使myReg指向NULL并释放我已分配的占用空间?

它只会释放内存.即使没有阅读规范,如果你看一下如何free声明函数,你会发现它实际上无法改变指针指向的内容.

/* Even if it wanted, `free` can't make `ptr` point to anything else. */
void free(void *ptr);
Run Code Online (Sandbox Code Playgroud)