我使用 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/