Sizeof(uint8_t*)总是4? [重复]

问题描述 投票:0回答:1

我创建了一个矢量 uint_8t* 有时是3、4或5个字节,但当我把它做成了 sizeof 我的数组,我总是得到4。如何解决这个问题?

在创建数组后,我想得到它的长度。

例如:我想得到的长度是

uint_8t* u8;

u8[0]=...;
u8[1]=...;

sizeof(u8)=4 取而代之的是 2.

sizeof(uint8_t)1I Alo triedsizeof(u8)sizeof(u8[0])`,我得到4个。

c++
1个回答
2
投票

sizeof(uint8_t*) 是指针的大小。对于32位架构来说,通常是4,对于64位架构来说,通常是8。另外通常这并不取决于底层结构(对于uint8_t*、std::string*、long*等应该是一样的),尽管这并不能保证。

sizeof(uint8_t) 是1,因为这就是 uint8_t 是:一个1字节。

看来你想知道的是内存的大小,而这个内存的大小是由 uint8_t* 指向的地方。只给一个指针是没有办法做到的。 你必须手动跟踪大小。通常情况下,通过使用 std::vector<uint8_t&gt。 而不是原始指针。

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