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并释放我已分配的占用空间?
Run Code Online (Sandbox Code Playgroud)free(myReg);这将使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)