reinterpret-cast 相关问题

一种C ++运算符,它通过重新解释基础位模式简单地允许类型之间的转换。在一般使用中,这相当于指向要转换为任何其他指针类型的指针,并且它还可以允许将整数类型转换为任何指针类型,反之亦然。

二次重解释和严格别名

这是严格违反别名的经典示例:std :: uint32_t foo(float * f,std :: uint32_t * i){* i = 1; * f = 2;返回* i; } int main(){std :: uint32_t i = 3; foo(...

回答 1 投票 4


重传的字节序

我有一个指向uint8_t的指针。每2个元素实际上是一个uint_16_t值,我想使用reinterpret_cast:uint16_t * Dst16Rgb = reinterpret_cast (Dst8Rgb);输出...

回答 1 投票 0

您能否在具有相同表示形式的类型之间重新解释_cast?

假设我们有两种类型,它们具有相同的表示形式(相同的成员变量和基类,并且顺序相同)。在它们之间进行reinterpret_cast是否有效(即不是UB)?例如。是...

回答 1 投票 2

重新解释为相同类型的广播

请考虑以下程序:struct A {}; int main(){A a; a b = a; a c = reinterpret_cast (a); } The compiler(g++14) throws an error about invalid cast from type 'A' to type 'A'....

回答 1 投票 0

对shared_ptr的引用的重新广播

让B派生自A类。通过阅读各种文章,我给人的印象是,像const std :: shared_ptr a(new B()); const std :: shared_ptr &...

回答 1 投票 0


将char *转换为c ++中的结构

我有以下结构struct record {RType m_rectype; char m_recordname [11]; char m_recordNo; char m_record_date [6];我有以下一行char * type line =“1Netherlands3240382”......

回答 3 投票 -4

reinterpret_cast如何用于展平std :: vector?

我想表示一个包含几个整数的结构的std :: vector作为整数的“展平”向量,而不复制数据。我用reinterpret_cast尝试了一些东西,如图所示......

回答 1 投票 0

C ++ reinterpret_cast带阵列引用和移动/复制赋值的安全性

我的队友正在为安全关键应用程序编写一个固定大小的std :: vector实现。我们不允许使用堆分配,因此他们创建了一个简单的数组包装器:...

回答 2 投票 0

用C ++重新解释这个:合法与否?

这是一个有点深奥的问题,但我很好奇以下类扩展模式在现代C ++中是否合法(如在,不构成UB)(对于所有的目的和目的,我很好......

回答 2 投票 9

在内存映射中使用reinterpret_cast时处理未定义的行为

为避免复制大量数据,需要mmap二进制文件并直接处理原始数据。这种方法有几个优点,包括将分页降级到操作......

回答 1 投票 3

矢量与reinterpret_cast

以下代码仅向向量col插入一个值。代码是从DBMS代码库中提取的(用于导入文件),具体来说,它来自1代码使用void *来读取任何...

回答 1 投票 -3

将指针转换为int和字符之间有什么区别吗?在C ++中

#包括 char ** make2D(const int dim1,const int dim2){char * toAlloc; const int size =(dim1 * dim2)+ dim2; toAlloc = new char [size]; for(int i = 0; i <dim2; ...

回答 2 投票 0

安全(和无成本)重新解释大小的数据

我想编写自己的“小矢量”类型,第一个障碍就是弄清楚如何实现堆栈存储。我偶然发现了std :: aligned_storage,这似乎是专门为...设计的

回答 1 投票 2

重新解释为无效是否合法*

我正在查看https://en.cppreference.com/w/cpp/language/reinterpret_cast,我注意到它指定了我们总是可以转换为的合法类型:byte * char * unsigned char *但我没有看到void * ...

回答 3 投票 8

C ++:reinterpret_cast是这些场景中的最佳选择吗?

这已经困扰了我很长时间:如何将指针从任何东西转换为char *以将二进制转储到磁盘。在C中,你甚至没有考虑过它。双d = 3.14; char * cp =(char *)&...

回答 1 投票 3

reinterpret_cast指向指针的指针

如果我有一个指向Derived **的派生类指针,并希望将它转换为指向Base **的基类指针,则使用static_cast (ppd)不编译,我被迫使用...

回答 2 投票 0

reinterpret_cast bug还是UB? [重复]

请考虑以下代码:#include #包括 std :: uintptr_t minPointer(void * first,void * second){const auto pair = std :: minmax(reinterpret_cast)

回答 2 投票 15

是否必须静态定义C ++对象布局?

更具体地说,假设A是B的可访问基类,下面的代码是否会产生未定义的行为,并且断言是否根据标准禁止触发?无效测试(B ...

回答 3 投票 11

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