这是我的代码:
int *p;
p=4;
printf("p is %p\n",p);
free(p);
//need p=NULL but I don't
int *q;
q=5:
printf("q is %i",*q);
然后错误就来了。 我只需要解释。
最佳答案
int *p;
是一个指向 int 的指针。
p = 4;
使其指向地址0x4
free(p);
尝试释放地址0x4
基本上,您正在尝试释放无法释放的资源。
int *q;
q = 5;
将 q 指向地址`0x5;
*q;
从0x5
地址读取,这很可能会崩溃。 (这个地址也没有对齐)。
指针不是整数...您编写的程序显示出对指针是什么以及为什么/如何使用它们缺乏理解。
关于c - 我只是不明白这个指针的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914677/