gpt4 book ai didi

c++ - 如何按字节数对 C(或 C++)对象进行类型转换

转载 作者:行者123 更新时间:2023-11-30 20:05:56 24 4
gpt4 key购买 nike

我有一个名为Example1的void *,它指向堆中动态分配的对象,但是我不知道该对象的数据类型,只知道它的大小。我如何对 void* 进行类型转换以便程序知道对象的大小?例如,假设我有这个:

void* Example1;
Example1 = malloc(5); //A char* of size 5

现在假设我所知道的是Example1指向一个5的数组???而不是这个声明:

*((char*) Example1);

有没有类似这样的说法:

*( ((object of size 5)*) Example1); 

我只是在寻找一种基于字节数而不是对象名称进行类型转换的方法。任何事情都会有帮助的。如果有一种方法可以在 C++ 中做这样的事情,我也会很感激。感谢您的帮助!

最佳答案

char大小为 1(根据定义)的对象。它可能不是唯一大小为 1 的对象,但它也是严格别名规则允许您使用的对象,无论对象的动态类型如何。

所以你已经有了正确的方法,不要再寻找替代方案了。

如果您的意思不是(大小为1的对象)而是(大小为5的对象),那么char[5]将干得好。

还有一个完全不同的问题,即对于一个您知道其大小但不知道其类型的对象,哪些操作有意义。并非所有对象都可以轻松复制!

关于c++ - 如何按字节数对 C(或 C++)对象进行类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617745/

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