strict-aliasing 相关问题

严格别名是由C或C ++编译器做出的假设,即取消引用指向不同类型对象的指针永远不会引用相同的内存位置(即它们不会相互别名)。

_Bool类型和严格别名

我试图编写一些宏来安全地使用_Bool,然后对我的代码进行压力测试。出于恶意测试的目的,我想出了这个肮脏的黑客:_Bool b = 0; *(unsigned char *)&b = 42;鉴于......

回答 1 投票 7

是否取消引用void ** - 转换类型**破坏严格别名?

考虑这个人为的例子:#include static inline void nullify(void ** ptr){* ptr = NULL; } int main(){int i; int * p =&i; nullify((void **)&p); ...

回答 1 投票 3

C中的严格别名

关于类型双关语的问题:为什么这段代码会破坏严格的别名规则:int main(){int a = 1;短j; printf(“%i \ n”,j = *((short *)&a));返回0;这不是:......

回答 1 投票 8

int可以作为unsigned int别名吗? [重复]

编译器生成代码,假设int可以由unsigned int别名。下面的代码:int f(int&a,unsigned int&b){a = 10; B = 12;返回; } int f(int&a,double&...

回答 1 投票 3

c ++ 11严格别名规则是否允许通过char *,char(&)[N],甚至std :: array访问uint64_t &with -fstrict-aliasing -Wstrict-aliasing = 2?

根据这个关于C ++ 11/14严格别名规则的stackoverflow答案:如果程序试图通过除以下类型之一以外的glvalue访问对象的存储值...

回答 2 投票 4

了解打破严格别名的后果

int main(){struct {int x; } foo; dostuff(FOO);返回0; } void dostuff(void * ptr){struct {int x; } * p = ptr; p-> x = 5;解除引用p是严格别名...

回答 2 投票 2

从空字节数组转换为结构指针可能会违反严格的别名?

大多数人关心的是如果他们收到带有数据的字节数组并且他们想要将数组转换为结构指针会发生什么 - 这可能违反严格的别名规则。我不确定 ...

回答 3 投票 1

签名/无符号别名规则是否按预期工作?

这是C ++ 17形式的规则([basic.lval] / 8),但它在其他标准中看起来很相似(“Lvalue”而不是C ++ 98中的“glvalue”):8如果程序尝试访问...的存储值

回答 1 投票 5

© www.soinside.com 2019 - 2024. All rights reserved.