考虑以下代码:
#include <iostream>
int main()
{
char* c = new char('a');
char ac[4] = {'a', 'b', 'c', 'd'};
unsigned long long int* u = reinterpret_cast<unsigned long long int*>(c);
unsigned long long int* uc = reinterpret_cast<unsigned long long int*>(&ac[3]);
*u = 42;
*uc = 42;
std::cout<<*u<<" "<<*uc<<std::endl;
}
这被认为是有效的代码,还是内存泄漏/未定义的行为?我在问,因为通过:
*u = 42;
*uc = 42;
我们正在访问程序不应访问的字节(我猜)。