指针增量时的行为.C++

Edu*_*yan 0 c++ pointers dereference

请考虑以下代码:

int main()
{
    int* p = new int(3);
    p+=4;
    std::cout<<*p<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我的编译器(Visual Studio 2012)打印:-7514522142int这种情况.
那么我们能以某种方式推断出输出并且这段代码合法吗?

jua*_*nza 8

您正在访问int超出范围的内存(分配给单个对象).行为未定义,即不可推导.尽管在语法上有效,但该程序不应被视为合法.