我创建了一个矢量 uint_8t*
有时是3、4或5个字节,但当我把它做成了 sizeof
我的数组,我总是得到4。如何解决这个问题?
在创建数组后,我想得到它的长度。
例如:我想得到的长度是
uint_8t* u8;
u8[0]=...;
u8[1]=...;
sizeof(u8)=4
取而代之的是 2
.
sizeof(uint8_t)
是 1
I Alo tried
sizeof(u8)sizeof(u8[0])`,我得到4个。
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>。 而不是原始指针。