腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
8
回答
什么
是
严格
的
别名
规则
?
c++
、
c
、
undefined-behavior
、
strict-aliasing
、
type-punning
在询问时,人们有时会提到
严格
的
别名
规则
。 他们在说
什么
?
浏览 13
提问于2008-09-19
得票数 906
回答已采纳
2
回答
C89或C++03是否定义了
严格
的
别名
规则
?
c++
、
c
我见过 C89和C++03定义了
严格
的
别名
规则
。然而,我在标准中找不到这一点。我的理解
是
在C99中添加了
严格
的
别名
规则
。
浏览 0
提问于2011-06-29
得票数 5
回答已采纳
5
回答
C
什么
时候你不想使用
严格
的
别名
?
c
、
gcc
、
strict-aliasing
我最近了解了C语言中的
严格
别名
,并阅读了这篇文章 另外,这是否意味着,如果我们打破了
严格
别名
浏览 1
提问于2020-09-08
得票数 2
3
回答
这真的违反了
严格
的
别名
规则
吗?
c++
、
language-lawyer
、
strict-aliasing
当我使用g++编译此示例代码时,收到以下警告:#include <iostream> *myInt = 34; } 在这种情况下,data不就是一个整数的
别名
,因此将它转换回一个整数不会违反
严格
的
别名
<em
浏览 38
提问于2014-11-19
得票数 32
回答已采纳
2
回答
严格
的混叠
规则
与安置新方法
c++
、
strict-aliasing
、
placement-new
IsoCpp.org提供了一个关于新位置的:#include <new> // Must #include this to use "placement new" // The pointers f and place will be equal} 上述代码是否违反了C++
严格
的混叠
规则
浏览 2
提问于2016-05-14
得票数 3
回答已采纳
3
回答
C++中的C99
严格
别名
规则
(GCC)
c++
、
c
、
gcc
、
strict-aliasing
但是在C++代码中如何处理C99
严格
别名
呢?这是一个正确的理解吗?
浏览 0
提问于2010-05-05
得票数 19
回答已采纳
3
回答
在g++中启用
严格
的
别名
警告
c++
、
visual-c++
、
gcc
、
strict-aliasing
在g++中启用
严格
别名
警告的正确方法是
什么
?VC++ 10是否实现了这些
规则
?
浏览 0
提问于2011-12-18
得票数 6
3
回答
是否有可能启用链接时间优化而只禁用某些函数的
严格
混叠?
c++
、
c
、
strict-aliasing
我的程序符合
严格
的混叠
规则
,除了一个地方:一个包含哈希函数(如MurmurHash3、SpookyHash等)的编译单元,在x86和x86_64上,这些散列函数接受const char *,将它们转换为这使得它们比逐字节处理数据要快得多,但我相信这打破了
严格
的混叠
规则
。现在,我用-fno-
严格
-混叠编译这个编译单元,而我用-f-
严格
-混叠来编译程序的其余部分。但是我想知道如果启用链接时间优化会发生
什么
。据我所知,GCC和Clang通过将程序源文件存储到.o文件中来实现链
浏览 5
提问于2014-09-10
得票数 9
2
回答
bind打破
严格
的混叠
规则
?
c++
、
boost-bind
、
strict-aliasing
bind(&SomeObject::memberFunc, this, _1)); boost/function/Functionbase.hpp:321:警告:取消引用类型双关指针将打破
严格
的混叠
规则
在不设置-fno-
严格
别名
的情况下消除这些警告的正确方法是
什么
?
浏览 1
提问于2010-06-15
得票数 3
回答已采纳
1
回答
在不违反C99中
严格
别名
规则
的情况下,键入带有空*的双关语
c
、
c99
、
void-pointers
、
strict-aliasing
、
type-punning
我最近遇到了
严格
的
别名
规则
,但我在理解如何使用void *在不违反
规则
的情况下执行类型双关时遇到了麻烦。我知道这违反了
规则
:*y = 42; 而且我知道我可以安全地使用C99中的联合来进行类型双关语0xDEADBEEF; *y = 42; int z = x;
浏览 0
提问于2013-04-01
得票数 22
回答已采纳
4
回答
C内存分配器和
严格
的
别名
c
、
memory-management
、
language-lawyer
、
strict-aliasing
即使在阅读了相当多关于
严格
别名
规则
的内容之后,我仍然感到困惑。据我所知,不可能实现一个合理的内存分配器来遵循这些
规则
,因为malloc永远不能重用释放的内存,因为内存可以在每次分配时用来存储不同的类型。谢谢。
浏览 1
提问于2011-10-07
得票数 10
回答已采纳
1
回答
使用模板和继承打破
严格
的混叠
规则
c++
、
templates
、
inheritance
、
gcc
、
strict-aliasing
下面的代码在gcc中警告我,我违反了
严格
的
别名
规则
: int field = 2;struct Specializationfield = copy.field;}; Specialization<int> s;}
浏览 0
提问于2018-12-13
得票数 9
回答已采纳
1
回答
在动态bool数组上使用memset
是
定义良好的吗?
c
、
language-lawyer
、
strict-aliasing
、
memset
在
严格
的混叠方面,这是定义良好的代码行为吗?我的看法
是
,有效的类型变成unsigned char。由于需要将memset的第二个参数转换为unsigned char (C17 7.24.6.1),并且由于有效类型
规则
(C17 6.5§6): 问题2:array[0]访问是否违反了
严格
的
别名
浏览 1
提问于2018-11-06
得票数 9
回答已采纳
1
回答
联合中的并行数组与
严格
别名
有
什么
关系?
c
、
arrays
、
strict-aliasing
给定一个像这样的联合: uint16_t halfwords[32];} my_union;printf("%d", my_union.halfwords[1]); 出于
严格
别名
规则
的目的,my_union.halfwords[1]是否被认为
是
对联合的一部分的合法访问,或者它被认
浏览 0
提问于2015-10-13
得票数 1
2
回答
C++静态继承中的取消引用指针问题?
c++
我试图使用静态多态性,但我得到了编译时警告和分段错误error.What
是
错误的?编译器: arm-linux-g++ (GCC) 4.4.2#include
浏览 2
提问于2020-07-21
得票数 1
1
回答
这是否违反了
严格
的
别名
规则
?
c
、
language-lawyer
、
pointer-arithmetic
、
strict-aliasing
受到我最近关于的评论的启发,我想知道以下代码是否违反了
严格
的混叠
规则
:{} 我知道,将类型转换为char以外的不同类型的指针取消引用是违反的,但是在这里,原始指针
是
int这是否违反了
严格
的
别名
规则
?
浏览 3
提问于2019-12-18
得票数 5
回答已采纳
4
回答
绕过c++
严格
别名
规则
c++
、
strict-aliasing
T& operator[](size_t i) { return *(T*)&buffer[i*sizeof(A)]; }};我该如何解决这个问题呢?奇怪的
是
,我的编译器对我的自定义object_pool类没有任何抱怨,除了其他事情之外,我将它用作我的关联STL数据结构的自定义分配器。我搞不懂这
浏览 0
提问于2013-03-22
得票数 1
2
回答
将一种类型的值与另一种类型一起移动是否违反了
严格
的
别名
?
c
、
memcpy
、
strict-aliasing
使用uint32_t移动任何类型的项,然后读回它们,是否违反了
严格
的
别名
规则
?如果
是
这样,它是否也违反了
严格
的
别名
规则
,将memcpy从uint32_ts数组转换为任何类型的数组,然后再读回这些元素?此外,如果元素的大小与uint32_t不同,我知道应该填充它们并复制正确数量的uint32_t,我的问题集中在这样做是否违反了
严格
的
别名
。
浏览 0
提问于2009-12-18
得票数 2
回答已采纳
4
回答
C++中的嵌套结构和
严格
别名
c
、
aliasing
type == PERSON) { } else { }这是合法代码还是违反了C99
严格
别名
规则
请解释为
什么
它是合法/非法的。
浏览 0
提问于2011-12-07
得票数 17
回答已采纳
1
回答
在遵守
严格
别名
规则
的同时使用reinterpret_cast
c++
我知道这段代码会因为违反
严格
的
别名
规则
而导致undefined behaviour,因为我们使用类型int和float指向相同的内存位置,并取消对它的引用,在编译器优化发生后,代码可能会崩溃: intfloat f = *reinterpret_cast<float*>(p); } 在上面的例子中,如果我们假设p
是
一个有效的内存地址(不会导致段错误),它还会有UB并打破
严格
的
别名
规则
吗?
浏览 13
提问于2021-05-11
得票数 1
回答已采纳
点击加载更多
热门
标签
更多标签
云服务器
对象存储
ICP备案
云点播
腾讯会议
活动推荐
运营活动
广告
关闭
领券