考虑以下程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
typedef struct WFC_STRUCT {
int a;
int b;
} WFC_STRUCT;
WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;
ptr->a=10;
return(0);
}
Run Code Online (Sandbox Code Playgroud)
我想了解教学中发生的事情:
WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;
Run Code Online (Sandbox Code Playgroud)
为什么该计划正在破产?在什么情况下使用上面的说明?
虽然在这一行投
WFC_STRUCT *ptr = (WFC_STRUCT*) NULL;
Run Code Online (Sandbox Code Playgroud)
没用,实际问题在下一行:
ptr->a=10; /* This is equivalent to: (*ptr).a=10; */
Run Code Online (Sandbox Code Playgroud)
在哪里,你取消引用一个NULL指针.这是未定义的行为.基本上,ptr
应该指向有效/可写的内存位置.但是在你的代码中,它不是.
归档时间: |
|
查看次数: |
102 次 |
最近记录: |