为什么 gzwrite 向量与 gzwrite 数组不同,数组值相同?

why gzwrite vector is diffent from gzwrite array with the array value is same?

我把相同的值放在不同的容器(向量和数组)中,然后通过 zlib 库 gzwrite 它们,但结果不同。

函数 gzwrite 将 unsigned char[] 写入 gz 文件

gzFile fi = gzopen(geopath, "wb");
unsigned char a[]= { 'n','h','h' };
vector<unsigned char> b({ 'n','h','h' });
gzwrite(fi, a, size(a));
//gzwrite(fi,&b, size(b));
gzclose(fi);

写入数组输出为6E6868(预期结果) 写向量输出是 00AF27

vector<unsigned char> b({ 'n','h','h' });
gzwrite(fi,&b, size(b));

这里取一个指向整个b变量的指针,其中包含std::vector的内部大小和容量字段。

改用gzwrite(fi, b.data(), size(b));