gpt4 book ai didi

c - 通过无效指针获取结构成员时如何更改编译器行为

转载 作者:行者123 更新时间:2023-11-30 15:02:00 25 4
gpt4 key购买 nike

我知道一个功能,当我们可以通过 NULL 或无效指针获取结构成员的偏移量时,如下所示:

#include<stdlib.h>
#include<stdio.h>
typedef struct A {
int c;
int b;
} A;
int main() {
A *a = (A*)0x100;
fprintf(stderr, "%p\n", &((*a).b));
fprintf(stderr, "%p\n", &a->b);
}

该程序产生:

0x104
0x104

有没有办法禁用此功能并得到段错误或错误?

最佳答案

你的例子是arguably未定义的行为。

因此,您不能指望会出现段错误,无论如何,这是硬件的一个功能。

无法保证您的示例或只是对空指针的简单取消引用会触发错误。

关于c - 通过无效指针获取结构成员时如何更改编译器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41202898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com