-
C语言中指针变量与malloc、free的使用注意事项
在函数中申请的局部变量在函数运行完之后就会释放
如果在函数中直接申请一个指针变量如:
void test(void) { int* a = NULL;//在c语言中全局变量未初始化会自动初始化为0,局部变量不会,因此此处需要将指针变量赋值为0 a = (int*)malloc(sizeof(int));//在对堆区申请一份空间存放整形变量,这个区域只能通过指针a访问 *a = 256; printf("堆区申请的空间中存方的数据为:%d\r\n",*a); printf("堆区申请的空间的地址为:%x\r\n",&a); if (a != NULL) free(a);//断开a与堆区申请的空间的连接 a = NULL;//虽然函数运行完会自动释放a,但防止在释放堆区空间后继续使用a造成指针悬空 }