假设以下情况:
typedef struct {
int ID1;
int ID2;
char string[256];
} Reg;
我动态创建一个数组,这个结构:
Reg *myReg = (Reg*) malloc(sizeof(Reg)*100); //array of type Reg with 100 positions.
在这个示例系统中,我填充这个数组。
有一点我不希望指针“myReg”指向这个向量我要他指向空同时我也清除了malloc占用的内存空间。
问题:
如果我这样做了:
free(myReg);
这将使myReg指向NULL并释放我分配的占用空间?
最佳答案
free(myReg);
这将使myReg指向NULL并释放占用的空间
我分配的?
它只会释放记忆即使不阅读规范,如果您查看
free
函数是如何声明的,您也会发现它实际上无法更改指针指向的内容。/* Even if it wanted, `free` can't make `ptr` point to anything else. */
void free(void *ptr);