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