c++ - C++中BYTE数组的长度

标签 c++

我有一个 C++ 程序,它有一个存储一些值的 BYTE 数组。我需要找到该数组的长度,即该数组中的字节数。请在这方面帮助我。

这是代码:

BYTE *res;
res = (BYTE *)realloc(res, (byte_len(res)+2));

byte_len 是一个虚构的函数,返回 BYTE 数组的长度,我想知道如何实现它。

最佳答案

鉴于您的代码:

BYTE *res;
res = (BYTE *)realloc(res, (byte_len(res)+2));

res 是指向类型 BYTE 的指针。它指向 n BYTES 的连续序列这一事实是由于您这样做了。有关长度的信息不是指针的一部分。换句话说,res只指向一个BYTE,如果你把它指向正确的位置,你可以访问的地方,你可以用它来获取 BYTE 值在它之前或之后。

BYTE data[10];
BYTE *res = data[2];
/* Now you can access res[-2] to res[7] */

所以,回答你的问题:你肯定知道你在调用 malloc()realloc() 时分配了多少 BYTE , 所以你应该记录这个数字。

最后,您对 realloc() 的使用是错误的,因为如果 realloc() 失败,您就会泄漏内存。使用 realloc() 的标准方法是使用一个临时的:

BYTE *tmp;
tmp = (BYTE *)realloc(res, n*2);
if (tmp == NULL) {
    /* realloc failed, res is still valid */
} else {
    /* You can't use res now, but tmp is valid. Reassign */
    res = tmp;
}

关于c++ - C++中BYTE数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182784/

相关文章:

c++ - 错误 C2248 : 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class

c++ - 是否可以将 vb.net 源代码转换为 C++?

c++ - 使用 Visual Studio 2012 Express Version 引用 dll

c++ - 将 head 设置为 NULL ('NULL' : undeclared identifier)

c++ - 最快的数组结构到结构数组的转换

c++ - 如何在 Excel 中显示 C++ 结果

c++ - 将任何类型的文件转换为带有 c 字符串的文件

c++ - 外部打印函数如何编译

c++ - C++中的split_view和lazy_split_view有什么区别?

c++ - 只读类变量 (C++) 和运算符重载