Its*_*gh1 -1 c++ arrays undefined-behavior
所以我试图获得数组的价值,我设法找到了这样做的方法.当我单独使用该代码时,它运行良好,但是当我尝试将它集成到函数或宏中时,值会溢出,并且我会得到像4561033这样的东西.
这是我目前的代码:
__inline int sizeOfArray(BYTE lpArray[]) {
if(lpArray)
return (*(&lpArray + 1) - lpArray);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为这就是所谓的"未定义行为",但我不知道这意味着什么,以及如何解决它.任何想法都会受到好评.
你不能这样做.该函数不知道数组的长度,也无法找到它.
那算术不起作用.一方面,lpArray实际上是一个BYTE*.
要查找数组的大小:
template <typename T, size_t N>
size_t sizeOfArray(const T (&)[N])
{
return N;
}
Run Code Online (Sandbox Code Playgroud)
然后:
BYTE array[42];
std::cout << sizeOfArray(array) << '\n'; // Output: 42
Run Code Online (Sandbox Code Playgroud)
如果尝试将函数传递给指针,程序将无法编译.
因此,如果不是数组,则在指针后面有一个动态分配的内存块:
BYTE* ptr = new BYTE[42];
Run Code Online (Sandbox Code Playgroud)
......首先,为什么?其次,在这种情况下,您必须自己跟踪这个大小.您可以将其存储到变量中.