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

标签 c++ c

我有一个名为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/

相关文章:

c++ - MSVC 2017 中 STL 容器的移动构造函数未标记为 noexcept

c++ - RSA_sign 和 EVP_DigestSignX() 之间的区别

c++ - CreateWindowEx() 在哪里?

c++ - std::list remove 在指针上调用 delete?

我可以调用带有 int 参数的长参数的函数吗?

c++ - 如何迭代具有相同基类的元素元组

c - C 语言文件 I/O 字数统计程序

c++ - 在共享库和 main 之间共享全局数据

c - c中的输出问题

c - 订阅与发布者相同的主题时发布失败?