c - 我只是不明白这个指针的情况

标签 c pointers

这是我的代码:

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/

相关文章:

c++ - 取消引用 NULL 指针是否被视为未指定或未定义的行为?

arrays - D 编程语言中的指针、函数和数组

c - 为什么 void 指针会给出与它指向的地址不同的地址?

c++ - C/C++ Windows 流量拦截器

c - STM32 DMA(并发流、FIFO、突发模式、双缓冲)

c - 根据用户输入打印链接列表

java - Java C/C++ 转换中的指针

C++:将 master 的指针传递给 worker

c - C99 中数据结构的效率(可能受字节序影响)

C-插入排序