c - 如何在每次程序运行时从空指针取消引用中崩溃?

标签 c pointers memory-leaks null crash

我使用 Dev C++ 将此代码编译为 32 位 可执行文件。

#include<stdio.h>
#include <stdlib.h>

void main() {
float f,*pf, i;
i = 10;
pf = (float *) malloc(sizeof(float));
pf = &i;

free(pf);
f = *pf;
printf("%f\n", f);

printf("%f", *pf);
}

取消引用释放的指针会导致崩溃,这里的崩溃不是因为未定义的行为而发生的。

我现在正在测试和学习,我想写一个空指针解引用代码每次运行都会崩溃。如何编写我的代码每次运行都会崩溃?

最佳答案

题名和描述有误。您一直在询问“空指针取消引用”,但您没有在任何地方取消引用空指针。事实上,您取消引用的指针 (pf) 保证不为空,因为它是变量 i 的地址。

您的未定义行为是由于在指向未动态分配的对象的指针上使用 free() 引起的(pf 指向局部变量 i)。

关于c - 如何在每次程序运行时从空指针取消引用中崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675499/

相关文章:

c - OSX El Capitan 中可能存在内存泄漏 Valgrind

ios - 检测设备信息时潜在的内存泄漏

c - C 套接字服务器中的accept() 速度慢

python - 多核机器上单精度和 double 组矩阵乘法的性能下降

c - 为什么 Xcode 无法在我的 Macbook Pro 上运行?

c - 我很困惑的基本 C 指针声明和指针变量

c - 尝试访问结构数组成员时出现段错误

c++ - 基本 Qt 应用程序 : Reports Masive Leaks 上的 Valgrind

c - 打印带星星的帐篷形状时输出错误

c++ - 如何判断 std::vector 是否调整了自身大小,以及如何解释指向 vector 内值的指针不再有效?