腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
文章
问答
(9999+)
视频
沙龙
1
回答
reinterpret_cast
在
memcpy
缓冲区
上
的
用法
是
UB
吗
?
、
struct A {}; std::vector<unsigned char> buffer;std::
memcpy
auto ptr = *
reinterpret_cast
<A**>(buffer.data()); // is this
UB
?delete ptr; 在这种情况下,
reinterpret_cast
的
用法
是
UB
浏览 27
提问于2020-01-13
得票数 8
回答已采纳
5
回答
访问“填充”字节
是
UB
吗
?
、
、
如果我有一个像这样
的
物体: uint32_t n;} blob {};访问填充字节
是
UB
吗
?例如:std::cout << data[4] << data[5] << data[6] <<data[7]; 我最初假设这可能
是
<em
浏览 1
提问于2013-02-06
得票数 10
1
回答
reinterpret_cast
、char*和未定义
的
行为
、
、
、
、
在
什么情况下,
reinterpret_cast
对char* (或char[N])
是
未定义
的
行为,以及何时定义了行为?我应该用什么经验法则来回答这个问题?如果data
是
一个指针呢? data_ptr =新字符(Int);*
reinterpret_cast
<int*>(data_ptr) = 4;//这是
UB
吗
?,100)开关(
缓冲区
){ case '1':句柄(*
reinter
浏览 3
提问于2016-09-10
得票数 19
回答已采纳
1
回答
转换为仅由char[]组成
的
结构并从该数组中读取是否定义良好?
、
、
reinterpret_cast
有许多将编译
的
用法
,但它们都是
UB
。它只
在
少数几种情况下得到了很好
的
定义。目前对我来说重要
的
是
: 假设我有一个
缓冲区
,其中包含要解析
的
二进制结构。我使用一个只包含struct
的
c
浏览 2
提问于2019-07-17
得票数 2
回答已采纳
4
回答
如何在c/c++中检查两个任意内存范围不重叠
、
假设我需要实现一个非常通用
的
实用程序函数,它必须将一个
缓冲区
复制到另一个
缓冲区
。根据c/c++
的
标准,使用内存重叠
的
memcpy
是
UB
,而内存移动则可能较慢。std::memove(dst, src, count); std::memcmp(dst, src, count);根据c/c++标准,对任意指针进行比较或减法
是
UB
所以这是一般情况下
的</e
浏览 0
提问于2018-08-06
得票数 1
回答已采纳
1
回答
是否有任何用于替代glGetNamedBufferSubData或glNamedBufferSubData
的
glMapNamedBuffer
的
使用情形
、
我知道以下
是
c++中
的
UB
,由于标准如何定义生命周期,以及如何允许使用对象:// read or write to fooFoo * foo = std::
reinterpret_cast
<Foo *>(glMapNamedBuffer(/*...*/
浏览 2
提问于2019-10-06
得票数 0
1
回答
原始字节连续块
的
内存对齐和严格混叠
、
、
、
<void*>( )}
是
安全还是
UB
?
是
安全还是
UB
?为什么?它和4有什么不同
吗
?如果我们用指针“填充”data指针所指向
的
内存,而不是从零偏移量(f.e )中“填充”内存,那么data会有什么显著
的
区别
吗
?1,2,3?然后从偏移量
memcpy</em
浏览 5
提问于2022-03-02
得票数 1
回答已采纳
4
回答
是否可以使用std::copy将数据
的
位模式从整数向量复制到无符号字符数组
、
、
、
、
最近,我一直
在
尝试更新一些代码,以使用标准
的
C++库函数,而不是旧
的
C风格函数。szBuffer[100];我希望它
的
行为方式与我要替换
的
代码类似:但调试代码时,很明显,我编写
的
std:
浏览 0
提问于2012-10-24
得票数 1
回答已采纳
2
回答
严格混叠和二进制I/O
、
= expectedVersion) // <- Potential
UB
?= expectedVersion) // <- Potential
UB
?包含未定义
的
行为:我们正在读取uint32_t类型
的
uint32_t成员,该成员覆盖
在
std::byte对象数组之上,编译器可以自由地假定uint32_t对象没有别名。 问题
是
:我
的
解释正确
吗
?如果
是
,可以做些什么来修复这段代码?如果
浏览 0
提问于2019-01-23
得票数 1
2
回答
这是std::数组未定义行为
的
使用
吗
?
、
、
可能重复: std::array<char, 10> val;//blah blah blah...我已经读过,通过char *来回转换不是未定义
的
,因
浏览 3
提问于2012-11-08
得票数 8
回答已采纳
1
回答
将指针传递给不相关但兼容
的
类型数组,而不进行复制?
、
、
、
(免责声明:在这一点
上
,这主要是学术兴趣。)也就是说,是否有任何方法使下列非
UB
,而不复制数据之间
的
两个正确类型
的
缓冲区
?据我所知,至少
在
严格
的
别名方面,以下
是
定义
的
行为:uint32_t ibuffer[n];data_sink_external(ibuffer, n); 但是,考虑到ibuffer
浏览 6
提问于2021-03-15
得票数 3
4
回答
无未定义行为
的
高效类型双关
、
、
、
、
std::
memcpy
。
在
简单
的
情况下,这会生成相同
的
最优程序集,但是在任何非平凡
的
情况下,这都会增加大量
的
开销。 使用
reinterpret_c
浏览 8
提问于2022-01-13
得票数 8
4
回答
避免使用
reinterpret_cast
复制
缓冲区
?
、
、
我遇到了一个代码片段,其中来自
缓冲区
的
字节被使用
memcpy
()复制到一个struct变量中。MtaHeader m_hdr;我把它改成:我
的
目的
是
避免将缓冲数据从p_data复制到局部变量m_
浏览 7
提问于2022-05-14
得票数 0
3
回答
将int转换为char数组
的
最佳方法
、
、
将int放入char数组
的
最佳方法(性能)是什么?这是我当前
的
代码:data[1] = (length >> 8) & 0xff;data
是
char数组(共享ptr),length
是
int。
浏览 1
提问于2013-10-21
得票数 5
回答已采纳
2
回答
关于内存对齐
的
其他问题
、
vector> std::vector<char> x = {1,2,3,4,5};} std::vector<char> x = {1,2,3,4,5}; std::
memcpy
(
reinterpret_cast
<char*
浏览 2
提问于2019-02-09
得票数 0
回答已采纳
1
回答
如何以符合标准
的
方式方便地填充混合类型
的
缓冲区
?
存在一些问题,我们需要用混合类型填充
缓冲区
。两个例子: *
reinterpret_cast
<int*>(ptr+offset) = int_value; ptr+offset
是
UB
写入<e
浏览 0
提问于2018-10-13
得票数 2
2
回答
FlatBuffers C++
reinterpret_cast
access实际
上
是
未定义
的
行为
吗
?这样做可以
吗
?
、
最近,我尝试
在
中使用C++。我发现FlatBuffers似乎使用了很多类型双关语,比如
reinterpret_cast
in C++。这让我有点不舒服,因为我已经学会了。例如,fbs文件中
的
Rect: left:int; right:int;} 实际<em
浏览 1
提问于2020-05-13
得票数 1
回答已采纳
2
回答
存储和检索到char数组
的
地址/指针
、
、
、
假设我们有一个char数组:和一个指针指针将地址存储到池中
的
数据块。我想把这个地址存储
在
池中,并检索它。基本
上
,我想做
的
是
嵌入到char数组池中
的
链接列表。原因
是
我不被允许创建任何新
的
变量(全局
的
),我不能包括新
的
头,以及其他限制。因此,问题
是
:如何在(比方说) pool[]
的
前4个元素中分段和插入一个4字节
的</
浏览 3
提问于2016-05-18
得票数 0
1
回答
自定义可选打破严格
的
混叠规则
、
、
、
、
我编写了一个自定义
的
可选类(因为我被迫使用没有STL
的
C++98 )。看起来
是
这样
的
:struct optional { bool has_value;T& operator*() { }编译器生成警告dereferencing type-punned
在<
浏览 1
提问于2020-06-11
得票数 0
回答已采纳
2
回答
通过浮点指针操作字节向量
、
是否可以像float容器一样通过它
的
数据指针来操作一个float?{ auto ptr =
reinterpret_cast
ptr[1] = 1.2; std::cout << ptr[0] << ", " << ptr[1
浏览 1
提问于2020-05-20
得票数 2
回答已采纳
点击加载更多
相关
资讯
纳秒级高性能日志系统 · ATC 2018
某音千万粉丝网红在线求助:妈妈在直播上买的翡翠是真货吗?值吗?
人类在3亿年前真的是一条鱼吗?我们手指上留下的证据或许能证明
C语言学习:scanf的高级用法
往期精选|Qt代码风格
热门
标签
更多标签
云服务器
ICP备案
实时音视频
即时通信 IM
对象存储
活动推荐
运营活动
广告
关闭
领券