我有此代码:int*m=(int*)malloc(sizeof(int));printf("%p%i\n",m,*m);(*m)=6;printf("%p%i\n",m,*m);free(m);printf("%p%i\n",m,*m);我在Linux上运行它。为什么内存地址的值总是0?为什么如果我在Windows上运行它,此值会更改?看答案让我们看看C11标准,第7.22.3.3章。这free功能导致指向的空间ptr可以进行交易,也可以用于进一步分配。[....]因此,这意味着传递给的指针free()在您的程序上下文中不再是“有效”指针。因此,试图访问指针,您本质上是访问导致的无效内存不确定